【问题标题】:Copy files and sub folder from resources folder从资源文件夹复制文件和子文件夹
【发布时间】:2023-01-11 22:01:08
【问题描述】:

我的要求是我在资源文件夹中有一个文件夹包含子文件夹和文件。

我想将这些文件和文件夹复制到另一个文件夹。如果我在本地运行此应用程序,一切正常。 但是在将代码部署到 vm 之后,我无法访问它并出现空指针异常。

用于访问资源文件夹的新 ClassPathResource 方法可以帮助您找到最佳解决方案。

用于访问资源文件夹的新 ClassPathResource 方法可以帮助您找到最佳解决方案。

应用程序:Java Spring Boot 应用程序。

提前致谢。

【问题讨论】:

    标签: java spring-boot docker jar classpath


    【解决方案1】:

    为了将文件和子文件夹从资源文件夹复制到目标文件夹,您可以使用 Apache Commons IO 库中的 FileUtils 类。下面是一个示例,说明如何使用此类将所有文件和子文件夹从名为“src”的资源文件夹复制到名为“dst”的目标文件夹:

    import org.apache.commons.io.FileUtils;
    
    try {
        File srcDir = new File("src");
        File dstDir = new File("dst");
    
        FileUtils.copyDirectory(srcDir, dstDir);
    } catch (IOException e) {
        e.printStackTrace();
    }
    

    此代码使用 copyDirectory 方法将“src”文件夹的全部内容(包括所有子文件夹和文件)复制到“dst”文件夹。 FileUtils 类是 Apache Commons IO 库的一部分,因此为了使用它,您需要将该库添加到项目的类路径中。上面的例子是用 Java 写的。但也可以用其他语言做到这一点。

    还值得注意的是,如果目标文件夹已经存在并且其中有文件,它们将被源文件夹中的文件覆盖。如果你想保留现有文件,只添加新文件,你可以使用 copyDirectoryToDirectory 方法代替,它将源文件夹的内容复制到目标文件夹而不替换现有文件。

    【讨论】:

    • 我的问题是如何将资源文件夹位置提供给 srcdir。
    • 我使用了新的 ClassPathresource(src/main/resources) 但 thix 无法使用我在 vm 中部署的 jar 文件