java - 为什么 new File() 期望文件位于 Java Web 应用程序的 TOMCAT_HOME/bin 中?

标签 java tomcat file-io

我在 Eclipse IDE 中有一个 Java 项目。如果我创建新的文件对象。像 File file = new File("someFile.txt")。它期望 someFile.txt 出现在项目主页中。我可以将它放在某个目录中,例如 config/someFile.txt 并可以在新的 File 构造函数中使用它。这里一切都好。

当我制作这个项目的JAR 并将其放在WEB-INF/lib 中时。然后 new File("someFile.txt") 代码需要 TOMCAT_HOME/bin 中的文件。我用 file.getAbsolutePath(); 检查了它。这是我无法控制的。我的问题是为什么在 java web 应用程序中 new File 期望在 bin 目录中。为什么不是项目主页。这样我就可以轻松导航到我的配置目录。甚至 ../../ 导航也不起作用。因为它们会附加 TOMCAT_HOME/bin/../../someFile.txt 并导致文件不存在。

我希望我已经很好地解释了我的问题。

最佳答案

TOMCAT_HOME/bin 是 JVM 进程的工作目录,因此每个相对路径都将相对于该目录进行解析。

除了不在 Web 应用程序中使用相对文件路径之外,您无能为力。更好的是,使用 ServletContext.getRealPath()Class.getResourceAsStream()

关于java - 为什么 new File() 期望文件位于 Java Web 应用程序的 TOMCAT_HOME/bin 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10297230/

相关文章:

java - YouTube 视频下载(Android/Java)

java - Spring Batch 在Where子句中使用>=和<

java - Tomcat v7.0 停止在本地主机上运行我的项目

java - Tomcat JDBC 连接池 VS c3p0 连接池

发送多个文件时的 Java 客户端-服务器问题

java - 如何在特定目录中创建文本文件?

Xcode中的C++程序不使用outFile输出简单的文本文件

java - hibernate 查询。 Actor 类

Java:寻找一种优雅的分割字符串的方法

tomcat - 在 tomcat 中托管一个位于 war 文件之外的 json 文件