2 回答

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