java - Tomcat 部署文件路径(用于 Java I/O 进程)

标签 java spring file-io deployment tomcat7

我设法使用包含以下内容的 .properties 文件在我的 Spring 项目中为不在我的项目内的文件(然后是 WAR 文件)实现一个简单的文件 I/O路径( source ),现在我需要在服务器中执行此操作。

之前,当我将文件包含在 WAR 文件中时,我可以使用路径在 Tomcat 服务器中访问它们

/home/my_username/tomcat7/webapps/my_project/WEB-INF/classes/

但现在这些文件不在 WAR 文件内,我只是将它们放在 webapps 文件夹旁边。

我的 Tomcat 7 文件夹的结构是:

tomcat7
|----> bin
|----> conf
|----> logs
|----> resources*
|----> temp
|----> webapps
|----\----> springapp.war*
|----> work

其中 /resources 是我在 WAR 文件 I/O 中需要的文件夹。

我的.properties文件有:

dir.server=home/my_username/tomcat7/resources
// or
dir.server=/home/my_username/tomcat7/resources

但显示错误(来 self 的 catalina.out 文件):

java.io.FileNotFoundException: /home/my_username/tomcat7/resources/my_file.file (No such file or directory)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(FileInputStream.java:120)
    at java.io.FileInputStream.<init>(FileInputStream.java:79)
    at weka.core.SerializationHelper.read(SerializationHelper.java:270)

是否有正确的方法来声明文件路径,或者我是否必须更改文件 I/O 的实现?

最佳答案

您收到 FileNotFoundException 的原因是您部署的 war 必须位于另一个系统或类似的系统上,但不包含相同的确切路径。您应该在程序中使用这行代码。

String tomcatPath = System.getProperty("catalina.base")

这将返回该特定系统中 tomcat 文件夹的路径。因此,如果部署 war 的系统具有不同的 tomcat 路径,则会返回该路径。然后,您可以通过将字符串附加到路径来访问资源文件夹中的属性文件。

String tomcatPath = System.getProperty("catalina.base");
String propertiesFilePath = tomcatPath + "/resources";

要访问特定文件,您可以使用以下代码:

String filePath = propertiesFilePath+"my_file.file";

你应该看看:

How to get Tomcat installation directory using Java.

希望有帮助..:)

关于java - Tomcat 部署文件路径(用于 Java I/O 进程),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21858488/

相关文章:

java - 写入文件,输出文件在哪里?

java - Java 中的大错误或与简单运算符不一致

java - 从 32 位样本大小的 WAV 创建样本数组

java - 删除数据库中没有的单词

c - 地址预订并写入文件

c# - 将每行中具有 int 值的文件转换为 IEnumerable<int>

java - 我需要什么才能开始创建类似于《部落冲突》的 Android 游戏?

spring - Spring Security中如何获取GET参数?

Java:将 XML 导入数据库,最简单的方法是什么?

java - 如何仅在使用spring单击java中的提交按钮后才转到下一页