0

フォルダー内の info.txt などの特定のファイルを見つける必要があります。問題は、ファイルがどのレベルにあるのかわからないことです。たとえば、ファイルはサブフォルダーまたはサブフォルダーのサブフォルダーにある場合があります。

したがって、これは再帰を経なければならないことを意味します....または、このタスクを完了する簡単な方法があります。JDK 1.5 を使用しています。

4

3 に答える 3

2

apache commons-io FileUtilsを使用できます。ディレクトリmessyfolderの下でファイルfooを再帰的に検索するとします。

Collection<File> results = FileUtils.listFiles(new File("messyfolder"), 
                                               new NameFileFilter("foo"), 
                                               TrueFileFilter.INSTANCE)
于 2013-09-10T01:02:37.747 に答える
1

再帰を使用する必要はありませんが、それは良い考えです。Fileオブジェクトを Java で使用して、作業を支援できます。使用する主なものは次のとおりです。

  • isDirectory()関数。かなり自明です。
  • Fileオブジェクトがディレクトリの場合は、関数を使用する必要がありlistFiles()ます。ファイルとディレクトリであるファイル オブジェクトの配列を返します。この配列で再帰関数を呼び出すだけです。
  • また、 FilenameFilterインターフェースを調べて、作業を支援することもできます。

コードの簡単なモックアップは次のようになります

File findFile(String fileName, File[] files){
    for(File file : files){
        if(file.isDirectory) File f = findFile(fileName, file.listFiles());
        if(f!=null) return f;
        if(file.getName.equals(fileName)) return file;
    }
    return null;
}
于 2013-09-09T23:56:05.710 に答える
0

IIRC Java 7 には、いくつかのディレクトリ ウォーキング ユーティリティがありました。スタックまたはキューを使用して、再帰なしでディレクトリ ツリーをたどることもできます。

于 2013-09-10T00:24:41.040 に答える