フォルダー内の info.txt などの特定のファイルを見つける必要があります。問題は、ファイルがどのレベルにあるのかわからないことです。たとえば、ファイルはサブフォルダーまたはサブフォルダーのサブフォルダーにある場合があります。
したがって、これは再帰を経なければならないことを意味します....または、このタスクを完了する簡単な方法があります。JDK 1.5 を使用しています。
フォルダー内の info.txt などの特定のファイルを見つける必要があります。問題は、ファイルがどのレベルにあるのかわからないことです。たとえば、ファイルはサブフォルダーまたはサブフォルダーのサブフォルダーにある場合があります。
したがって、これは再帰を経なければならないことを意味します....または、このタスクを完了する簡単な方法があります。JDK 1.5 を使用しています。
apache commons-io FileUtilsを使用できます。ディレクトリmessyfolderの下でファイルfooを再帰的に検索するとします。
Collection<File> results = FileUtils.listFiles(new File("messyfolder"),
new NameFileFilter("foo"),
TrueFileFilter.INSTANCE)
再帰を使用する必要はありませんが、それは良い考えです。File
オブジェクトを Java で使用して、作業を支援できます。使用する主なものは次のとおりです。
isDirectory()
関数。かなり自明です。File
オブジェクトがディレクトリの場合は、関数を使用する必要がありlistFiles()
ます。ファイルとディレクトリであるファイル オブジェクトの配列を返します。この配列で再帰関数を呼び出すだけです。コードの簡単なモックアップは次のようになります
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;
}
IIRC Java 7 には、いくつかのディレクトリ ウォーキング ユーティリティがありました。スタックまたはキューを使用して、再帰なしでディレクトリ ツリーをたどることもできます。