我正在使用 tomcat 和 gradle 创建 Spring MVC 应用程序,用户可以从前端上传一些文件,然后可以对其进行更改。 我想将该文件上传到项目目录(scr/tmp/env)。如果我手动创建目录,它可以工作,但我无法将空包推送到 git 中。这意味着当有人将我的项目下载到另一台计算机时,他的项目中不会有这些目录。 例如,我可以使用 public static void 方法和以下代码创建一些类:
File file = new File("src/tmp/dbEnv/");
if (!file.exists()) {
Files.createDirectories(Paths.get("src/tmp/dbEnv/"));
}
它将创建目录。但是如果我将此代码粘贴到 spring 方法中(例如在 Controller 或 dao 类中),则不会创建目录。
您能给我建议吗,如何在开始之前在项目中创建目录并在完成应用程序之前清除这些目录?也许Spring或Gradle可以做到这一点?谢谢。
最佳答案
您可以使用应用程序监听器来访问应用程序启动和拆卸事件,如下所示:
@Configuration
public class TempDirConfig {
private static final Path TEMP_PATH = Paths.get( "/tmp/dbEnv" );
@Bean( "createTempDir" )
public ApplicationListener<ContextStartedEvent> createTempDir() {
return event -> {
try {
if ( !Files.exists( TEMP_PATH ) ) {
Files.createDirectories( TEMP_PATH );
}
}
catch ( IOException aE ) {
// oops
}
};
}
@Bean( "removeTempDir" )
public ApplicationListener<ContextClosedEvent> removeTempDir() {
return event -> {
try {
if ( Files.exists( TEMP_PATH ) ) {
FileSystemUtils.deleteRecursively( TEMP_PATH );
}
}
catch ( IOException aE ) {
// oops
}
};
}
}
关于java - 在启动应用程序之前如何在项目中创建目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59497888/