【问题标题】:How to continue copying on error with copyDirectory from FileUtils (Apache Commons IO 2.4)如何在 FileUtils 中的 copyDirectory 出现错误时继续复制(Apache Commons IO 2.4)
【发布时间】:2012-12-18 10:53:39
【问题描述】:

我正在尝试使用来自 apache commons io (2.4) 的 FileUtils 方法“static void copyDirectory(File srcDir, File destDir)”将文件从一个文件夹复制到另一个文件夹,代码如下:

String srcDir  = "/sourceDirectory/examples/";
String destDir = "/tmp/examples/";
try{
    FileUtils.copyDirectory(new File(srcDir), new File(destDir));
} catch (IOException e){
    e.printStackTrace();
}

文件结构如下:

examples/                           (read access)
examples/.subdirectory              (NO access)
examples/file1.txt                  (read access)
examples/file2.txt                  (read access)
examples/subdirectory2/file1.txt    (read access)
examples/subdirectory2/file2.txt    (NO access)

问题是,在 srcDir 中有几个文件和一个我无权访问的子目录。 FileUtils.copyDirectory 抛出“java.io.FileNotFoundException: .subdirectory (Permission denied)”并中止。

是否可以忽略那些我没有权限的文件,而只复制我可以读取的所有其他文件?

【问题讨论】:

    标签: java apache-commons-io fileutils


    【解决方案1】:

    如下使用FileFilter

    FileUtils.copyDirectory(new File(srcDir), new File(destDir), new FileFilter() {
        @Override
        public boolean accept(File pathname) {
            return pathname.canRead();
        }
    });
    

    请参阅javadoc 了解更多信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 2019-04-30
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多