今天碰到一個很嚴重的問題,idea讀取配置文件路徑不管怎麼寫,都是不正確的,我也很納悶。我的項目目錄是這樣的:
首先,getResourceAsStream方法需要寫相對路徑,那麼就要搞清楚,是相對誰?
如上圖所示,相對的是Output directory裏設置的路徑,一定要注意!
第一種讀取辦法:ServletContext讀取web工程下的資源
InputStream is = context.getResourceAsStream("file/config.properties");
第二種辦法:通過classloader去獲取web工程下的資源
InputStream is = this.getClass().getClassLoader()
.getResourceAsStream("file/config.properties");
但這樣讀不到配置文件,我不知道具體原因,花了將近兩小時,用谷歌在一個國外的論壇上找到了解決辦法(多虧有道翻譯)。
具體是這樣操作的:
也可以這樣:
把file添加到項目根目錄了,然後可以這樣寫,就能用classloader讀取配置文件了。這樣做的原因是:類加載器在WEB-INF/classes目錄下,不這樣做,config.properties是不會被加載到classes下面的。
InputStream is = this.getClass().getClassLoader()
.getResourceAsStream("config.properties");
idea的路徑真的很迷很迷,可能這個解決了,下一個不知道又會出現什麼問題,我現在也沒有完全搞懂,只是有了暫時的解決辦法。
總結:
相對路徑:相對的是
使用類加載器時,路徑相對的是: