我有一些嵌入式Java代碼中,我試圖加載一個屬性文件位於同一文件夾中的JSP文件:JSP:的FileReader使用相對路徑拋出FileNotFoundException異常
Properties titles = new Properties();
titles.load(new FileReader("titles.txt"));
上面的代碼拋出FileNotFoundException。
在這種情況下,究竟是如何引用「當前文件夾」?
我有一些嵌入式Java代碼中,我試圖加載一個屬性文件位於同一文件夾中的JSP文件:JSP:的FileReader使用相對路徑拋出FileNotFoundException異常
Properties titles = new Properties();
titles.load(new FileReader("titles.txt"));
上面的代碼拋出FileNotFoundException。
在這種情況下,究竟是如何引用「當前文件夾」?
兩件事情:
我看到的主要問題是您無法對路徑進行任何有效的假設是,因爲你不知道你的編譯JSP是
所以:創建一個控制器類,把屬性文件相同的文件夾,並通過getClass().getClassLoader().getResourceAsStream("titles.txt");
是的,我也在想,這可能是一個問題,JSP編譯和資源不會被找到。 而你當然完全正確的點1! – Redlab 2010-06-24 11:01:31
FileReader
需要絕對路徑從控制器類加載它,或者相對於運行java的地方。但對於Web應用程序,通常通過/etc/init.d/tomcat startup
完成,不能依賴於當前的目錄。
你可以通過調用servletContext.getRealPath("/relative/path/to/file.txt")
你可以通過調用request.getRequestURL()
獲取URL的相對部分獲得應用程序的絕對路徑。
也就是說,你最好在一個servlet中使用這個代碼,而不是一個JSP - JSP是一種視圖技術,邏輯不應該放在它裏面。
相關:http://stackoverflow.com/questions/2792870/java-cant-find-file-when-running-through-eclipse/2792939#2792939 – BalusC 2010-06-24 11:42:13