4

次のコードを使用して、apache commons io(2.4)のFileUtilsメソッド「staticvoid 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(許可が拒否されました)」をスローして中止します。

許可されていないファイルを無視して、読み取ることができる他のすべてのファイルをコピーすることは可能ですか?

4

1 に答える 1

5

次のように a を使用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 に答える