我希望使用:
classpath:/mydata/response.xml
将文件复制到。
像这样
Path dest = Paths.get("classpath:/mydata/response.xml");
对于 Spring Boot,这适用于其他地方,但不使用
Paths
!
我想复制一个文件...
InputStream is = file.getInputStream();
// Which relative Path syntax?
Path dest = Paths.get("./src/main/resources/mydata"+fileName);
Files.copy(is, dest);
关于如何设置在 Tomcat 上存储文件的相对路径有什么建议吗?
我的目标是:
MyProject\src\main\resources\mydata
这是一个不错的 Spring Boot 项目。
使用相对于
CLASSPATH
的路径实际上是不可能实现的,因为类路径是目录和/或 jar 文件的 list。 如果有多个目录,应该使用哪一个?如果只有jar 文件,那就毫无意义了。
我们的 Tomcat 服务器启动脚本之一以这样的方式开始类路径:
CLASSPATH=$CATALINA_HOME/bin/tomcat-juli.jar:\
$JAVA_HOME/lib/tools.jar:\
$CATALINA_HOME/bin/commons-daemon.jar:\
$CATALINA_HOME/bin/bootstrap.jar
如果您想存储/访问 Web 应用程序空间内的文件,您可以使用
ServletContext 来解析与应用程序安装目录相关的路径。使用 getRealPath()
方法,但要小心,因为它可能会返回“如果无法执行翻译,则为 null”。 在 Web 应用程序的文件系统结构中存储任何内容可能会导致许多问题,因为重新部署必须保留添加的文件或销毁它们。 我建议创建一个
可配置 数据目录,其中该目录的根可以在 .properties
文件中指定,或者作为 web.xml 文件中的
<init-param>
(或其他部署描述符,具体取决于关于您可能使用的框架)。