4

我正在尝试使用来自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)”并中止。

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

4

1 回答 1

5

使用FileFilter如下:

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

有关更多信息,请参阅javadoc

于 2012-12-18T11:02:14.477 回答