? ? ? ? ? ? ? ? maven下邊資源文件讀取問題
? 這個(gè)問題自己糾結(jié)了一會(huì)翰萨,主要是很多問題弄不懂泰演,現(xiàn)在詳細(xì)介紹一下在idea中如何讀取resources文件下邊的配置文件芙委,新建一個(gè)maven工程后逝嚎,main目錄下會(huì)有java和resources兩個(gè)文件夾锹引,其中java文件夾下存放源代碼缺虐,resources文件夾下存放一些配置文件等
//獲取classpath路徑?
?System.out.println("classpath路徑: "+Demo1.class.getClassLoader().getResource("").getPath()); ?
//獲取當(dāng)前類的加載路徑
?System.out.println("當(dāng)前類加載路徑: "+Demo1.class.getResource("").getPath()); // 讀取文件resources目錄中文件的若干種方法?
?// 方法一:從classpath路徑出發(fā)讀取 readTxt(Demo1.class.getClassLoader().getResource("test/demo1.txt").getPath());
?// 方法二:從類加載路徑出發(fā)芭概,相當(dāng)于使用絕對(duì)路徑 readTxt(Demo1.class.getResource("/test/demo1.txt").getPath());
?// 方法三:從類加載路徑出發(fā)赛不,相當(dāng)于使用相對(duì)路徑 readTxt(Demo1.class.getResource("../../../test/demo1.txt").getPath());
輸出結(jié)果
classpath路徑: /home/jerry/IdeaProjects/Demo/out/production/demo1/當(dāng)前類加載路徑: /home/jerry/IdeaProjects/Demo/out/production/demo1/me/shenchao/main/
1.前者獲取的是當(dāng)前類加載的路徑,如果用此方法讀取文件則有兩種方法罢洲,與相對(duì)路徑絕對(duì)路徑非常類似踢故,具體參見代碼
2.后者獲取的是類加載器的路徑,即會(huì)到classpath路徑下惹苗〉罱希可以理解當(dāng)前在 classp/ 目錄下,要想訪問哪個(gè)文件桩蓉,直接填寫路徑即可淋纲,不用區(qū)分相對(duì)路徑和絕對(duì)路徑。顯然院究,此方法比較容易寫出洽瞬。推薦。
demo的結(jié)果:
由此引出的問題:加/不不加/的區(qū)別: