我在.war文件的根目录中有一个jsp文件。 然后我有一个名为STUFF的文件夹。
如何访问STUFF中的read.txt文件?
/Name_of_war/STUFF/read.txt是正确的路径吗?
答案 0 :(得分:24)
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()
始终存在此警告,不建议在实际应用中使用。如果您最终需要的只是获得InputStream
该文件,您可能已使用FileInputStream
,那么最好使用ServletContext#getResourceAsStream()
直接将其作为InputStream
}:
String relativeWebPath = "/STUFF/read.txt";
InputStream input = getServletContext().getResourceAsStream(relativeWebPath);
// Do your thing with InputStream.
答案 1 :(得分:1)
如果它位于类路径中,或者您可以将该文件夹添加到类路径中, 怎么样: ClassLoader classLoader = Thread.currentThread()。getContextClassLoader(); InputStream input = classLoader.getResourceAsStream(fileName);