2010-03-16 49 views

回答

23

webapp相對路徑是/STUFF/read.txt

可能使用ServletContext#getRealPath()將相對web路徑轉換爲絕對本地磁盤文件系統路徑。通過這種方式,您可以在通常的java.io中進一步使用它,它實際上對它正在運行的Web環境一無所知。

String relativeWebPath = "/STUFF/read.txt"; 
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath); 
File file = new File(absoluteDiskPath); 
// Do your thing with File. 

但是,如果將服務器配置爲在內存中而不是在磁盤上擴展WAR,則不起作用。使用getRealPath()一直是這樣的警告,並不建議在現實世界的應用程序。如果你最終需要被剛剛那個文件,你很可能已經使用FileInputStreamInputStream,你最好使用ServletContext#getResourceAsStream()直接把它作爲InputStream

String relativeWebPath = "/STUFF/read.txt"; 
InputStream input = getServletContext().getResourceAsStream(relativeWebPath); 
// Do your thing with InputStream. 
+2

我浪費了一天的時間嘗試和嘗試..面臨'FileNotFoundException',它在本地工作,但不在網絡中。感到沮喪..但最後我遇到你的答案,並試圖..它的作品真棒..非常感謝.. :) – 2014-09-22 03:12:43

1

如果它位於在classpath ,或者您可以將文件夾添加到類路徑中, 如何: ClassLoader classLoader = Thread.currentThread()。getContextClassLoader(); InputStream input = classLoader.getResourceAsStream(fileName);

相關問題