FileInputStream 在哪个文件夹中查找?
我使用该行
FileInputStream stream = new FileInputStream("myfile.properties");
以在不指定路径的情况下打开属性文件。
在Apache Tomcat上运行它时,找不到该文件。我将文件放入应用程序的根文件夹中。
Java 在哪个文件夹中查找?
我无法更改路径,因为代码不是由我编写的。
我使用该行
FileInputStream stream = new FileInputStream("myfile.properties");
以在不指定路径的情况下打开属性文件。
在Apache Tomcat上运行它时,找不到该文件。我将文件放入应用程序的根文件夹中。
Java 在哪个文件夹中查找?
我无法更改路径,因为代码不是由我编写的。
它将在文件夹中查找,该文件夹是以下结果
System.getProperty("user.dir")
这可能是任何地方。这取决于 tomcat 服务器启动时的当前工作目录。
尝试加载一个小的 servlet,如果无法从标准日志或 tomcat 启动过程中找出信息,则在加载时打印该信息。
它将在 JVM 进程的工作目录中查找,而不是 WAR 的根目录。该工作目录的位置取决于 Tomcat 进程是如何启动的。
因此,您不应该这样做。您应该通过询问 ServletContext
对象(它具有各种方法来查找资源流)从 WAR 内部获取对资源的引用,例如从 Servlet 内部:
InputStream stream = getServletContext().getResourceAsStream("myfile.properties");
此外,将 WAR 中的资源称为实际文件也是不好的做法。这只有在 WAR 分解为目录结构时才有效,如果 servlet 包含决定将 WAR 作为未分解文件运行,则此方法不起作用。通过坚持这些方法,您可以保持中立和可移植性。.WAR
getResource...()
但是,正如你所说,如果你不能更改代码,那么这是一个问题,因为代码被破坏并且写得很糟糕。您需要弄清楚如何启动Tomcat,以便工作目录位于“正确”的位置。这可能需要破解启动脚本。