如何使用Spring Boot为我的文件创建永久目录

时间:2018-11-11 18:41:01

标签: spring spring-boot

我正在使用Spring Boot和Spring内容。我想将所有图片和视频存储在一个目录中,但是每次我重新运行应用程序时,我的代码都会继续创建不同的目录

我有这样的bean,当我再次运行该应用程序时,它显示空指针,因为该目录已经存在,但我希望它仅创建一次并且每个文件都存储在其中

every time i run this tries to create the dir again
    @Bean
     File filesystemRoot() {
        try {
            return Files.createDirectory(Paths.get("/tmp/photo_video_myram")).toFile();
        } catch (IOException io) {}
        return null;
    }

    @Bean
    FileSystemResourceLoader fileSystemResourceLoader() {
        return new FileSystemResourceLoader(filesystemRoot().getAbsolutePath());
    }

3 个答案:

答案 0 :(得分:2)

您可以先使用isDirectory()方法检查目录是否已存在。如果不存在,请创建一个新的。

答案 1 :(得分:2)

一种解决方案是检查目录是否存在:

@Bean
File filesystemRoot() {
  File tmpDir = new File("tmp/photo_video_myram");
  if (!tmpDir.isDirectory()) {
    try {
      return Files.createDirectory(tmpDir.toPath()).toFile();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
  return tmpDir;
}

答案 2 :(得分:2)

同时,当您使用Spring Boot并相应地使用spring-content-fs-boot-starter时,还有另一种方法可以对此进行归档。 根据{{​​3}}上的文档,只需添加

spring.content.fs.filesystemRoot=/tmp/photo_video_myram

到您的application.properties文件。