如何在loadonstartup上复制嵌套文件夹内的文件夹?

问题描述 投票:0回答:1

我大约有150个文件夹,并且每个文件夹中都有图像,我正在尝试将整个目录复制到另一个目录中。对于少数目录,它可以正常工作,然后自动停止,而不会引发任何错误或异常。我正在使用FileUtils方法来实现这一目标。

org.apache.commons.io.FileUtils.copyDirectoryToDirectory(originalImageFolder, new File(this.ctx.getRealPath(newFilePath)));
java apache servlets fileutils
1个回答
0
投票

如以上我的评论中所述,如果FileUtils.copyDirectory(File srcDir, File destDir)对您不起作用。我提供了一种替代解决方案,而无需使用FileUtils。

我在Windows上进行了测试,对我有用。我尚未在Linux上进行过测试,但是希望您提供的示例在Linux上也可以使用。

这里我正在使用Windows xcopy命令复制所有文件,包括子目录。我通过的参数定义如下。

  • / e-复制所有子目录,即使它们为空。
  • / i-如果Source是目录或包含通配符和Destination不存在,xcopy假定目标指定目录名称并创建一个新目录。然后,xcopy复制所有指定的文件进入新目录。
  • / h-复制具有隐藏文件和系统文件属性的文件。默认,xcopy不会复制隐藏文件或系统文件

Windows:

   String src = "C:\\srcDir";
    String dest = "C:\\destDir";
    List<String> cmd = Arrays.asList("xcopy", src, dest, "/e", "/i", "/h");
    try {
        Process proc = new ProcessBuilder(cmd).directory(new File("c:\\")).start();
        BufferedReader inp = new BufferedReader(new InputStreamReader(proc.getInputStream()));
        String line = null;
        while ((line = inp.readLine()) != null) {
            System.out.println(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }

Linux:

String src = "srcDir/";
    String dest = "~/destDir/";
    List<String> cmd = Arrays.asList("cp", "r", src, dest);
    try {
        Process proc = new ProcessBuilder(cmd).directory(new File("c:\\")).start();
        BufferedReader inp = new BufferedReader(new InputStreamReader(proc.getInputStream()));
        String line = null;
        while ((line = inp.readLine()) != null) {
            System.out.println(line);
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
© www.soinside.com 2019 - 2024. All rights reserved.