<分区>
我在 .war 文件的根目录下有一个 jsp 文件。 然后我有一个名为 STUFF 的文件夹。
如何访问 STUFF 中的文件 read.txt?
/Name_of_war/STUFF/read.txt 是正确的路径吗?
<分区>
我在 .war 文件的根目录下有一个 jsp 文件。 然后我有一个名为 STUFF 的文件夹。
如何访问 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()
总是有这个警告,不推荐在现实世界的应用程序中使用。如果您最终只需要获取该文件的 InputStream
,您可能会为此使用 FileInputStream
,那么您最好使用 ServletContext#getResourceAsStream()
直接作为 InputStream
获取它:
String relativeWebPath = "/STUFF/read.txt";
InputStream input = getServletContext().getResourceAsStream(relativeWebPath);
// Do your thing with InputStream.
关于java - 在 servlet(网络应用程序)中,我如何知道相对路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2455474/
相关文章:
Java - KeyListener 不起作用,但 ActionListener 起作用
java - 服务程序 : get query string but just return empty
java - 使用 ANTLR 4 在 Python 3 中生成 Java 解析器
java - "request"和 "response"变量或值是在 Java EE 中预定义的吗?
javax.servlet.ServletContext 正在从 Spring Boot 应用程序中的多个依赖项加载
java - 我无法从 Google 应用引擎上部署的后端 servlet 连接到我的 google cloud sql 数据库
java - 如何使用比较器和迭代器对整数 vector 进行排序?