gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 22:05:46 26 4
gpt4 key购买 nike

我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com