我在.war文件的根目錄下有一個jsp文件。 然後我有一個名爲STUFF的文件夾。在servlet(web應用程序)中,我如何知道相對路徑?
如何訪問STUFF中的read.txt文件?
/name_of_war/STUFF/read.txt是否是正確的路徑?
我在.war文件的根目錄下有一個jsp文件。 然後我有一個名爲STUFF的文件夾。在servlet(web應用程序)中,我如何知道相對路徑?
如何訪問STUFF中的read.txt文件?
/name_of_war/STUFF/read.txt是否是正確的路徑?
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()
一直是這樣的警告,並不建議在現實世界的應用程序。如果你最終需要被剛剛那個文件,你很可能已經使用FileInputStream
的InputStream
,你最好使用ServletContext#getResourceAsStream()
直接把它作爲InputStream
:
String relativeWebPath = "/STUFF/read.txt";
InputStream input = getServletContext().getResourceAsStream(relativeWebPath);
// Do your thing with InputStream.
如果它位於在classpath ,或者您可以將文件夾添加到類路徑中, 如何: ClassLoader classLoader = Thread.currentThread()。getContextClassLoader(); InputStream input = classLoader.getResourceAsStream(fileName);
我浪費了一天的時間嘗試和嘗試..面臨'FileNotFoundException',它在本地工作,但不在網絡中。感到沮喪..但最後我遇到你的答案,並試圖..它的作品真棒..非常感謝.. :) – 2014-09-22 03:12:43