我设法使用包含以下内容的 .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/