0

次の再帰的な方法を使用して、特定のディレクトリ内のすべてのファイルとフォルダーを一覧表示していますが、非表示のシステム保護ファイルを表示している場合でも、Windowsエクスプローラーに表示されないファイルが一覧表示されているようです。ディレクトリをスキャンする方法を設定しましたが、ディレクトリC:\\にファイルを出力するとハングします。まあ、実際には、ハングするとは思わない-最終的な配列を返すように見えるが、まだファイルがあり、例外はスローされない!BootBOOTSECT.BAK

private static ArrayList<File> recursiveSearch(File dir){
        File[] files = dir.listFiles();
        ArrayList<File> result = new ArrayList<File>();
        for(File file : files)
            if(file.isDirectory()){
                result.add(file);
                ArrayList<File >tempList = recursiveSearch(file);

                for(File temp : tempList)
                    result.add(temp);
            }else{
                result.add(file);
                System.out.println(file.getPath());
            }
        return result;

    }

私は知ってFileSystemViewいますが、この場合、カスタムファイル名フィルターを適用する必要があるため使用できません(上記から除外しましたが、テストしましたが、メソッドの出力には影響しません)。助けていただければ幸いです-事前に感謝します

4

1 に答える 1

0

このファイル(bootsect.bak)はディレクトリとして検出されますが、nullのファイル配列を返します。回避策は、インスタンス化されていることを確認することです。

private static List<File> recursiveSearch(File dir) {
    File[] files = dir.listFiles();
    List<File> result = new ArrayList<File>();
    if (files != null) {
        for (File file : files)
            if (file.isDirectory()) {
                result.add(file);
                List<File> tempList = recursiveSearch(file);

                for (File temp : tempList)
                    result.add(temp);
            } else {
                result.add(file);
                System.out.println(file.getPath());
            }
    }

    return result;
}
于 2012-07-27T19:24:02.953 に答える