Exo*_*com 3 java fileutils apache-commons-io
我正在尝试使用以下代码从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();
}
Run Code Online (Sandbox Code Playgroud)
文件结构如下所示:
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)
Run Code Online (Sandbox Code Playgroud)
问题是,在srcDir中有一些文件和一个我无权访问的子目录。FileUtils.copyDirectory抛出“ java.io.FileNotFoundException:.subdirectory(权限被拒绝)”并中止。
是否可以忽略我无权访问的那些文件,而仅复制我可以读取的所有其他文件?
使用FileFilter如下:
FileUtils.copyDirectory(new File(srcDir), new File(destDir), new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.canRead();
}
});
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参见javadoc。