2 回答

TA貢獻1864條經(jīng)驗 獲得超2個贊
FileInputStream只能定位絕對路徑,所以你填入相對路徑當然找不到。
讀取資源文件一般根據(jù)上下文環(huán)境分為兩種情況。
第一種是非WEB應(yīng)用的環(huán)境中,只需要簡單的通過類加載器的getResourceAsStream方法讀取。
例如,classpath根目錄下有一個setting.properties文件,可以這樣讀取
InputStream is = Thread.currentThread().getClass().getResourceAsStream("/setting.properties");
第二種是WEB應(yīng)用的環(huán)境中,因為應(yīng)用包含在了Servlet 容器中,所以情況相對來說要復(fù)雜一些。
同上一樣,讀取classpath中的資源,依然通過類加載讀取,但是通過上下文的類加載器中去讀。
例如,
Java代碼
InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream("/setting.properties");
讀取WebContent目錄中的情況又不一樣了,不能通過類加載器讀取,需要通過ServletContext去讀。
例如,
Java代碼
InputStream is = request.getServletContext().getResourceAsStream("/WEB-INF/setting.properties");
添加回答
舉報