在servlet(Web应用程序)中,我如何知道相对路径?

时间:2010-03-16 15:05:49

标签: java servlets

我在.war文件的根目录中有一个jsp文件。 然后我有一个名为STUFF的文件夹。

如何访问STUFF中的read.txt文件?

/Name_of_war/STUFF/read.txt是正确的路径吗?

2 个答案:

答案 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);