再帰を使用して特定の種類のファイルを検索しました(たとえば、.pdfファイルがここで使用されています)。 再帰アルゴリズムはすべてのサブフォルダを検索します。 しかし、サブフォルダが多すぎるとパフォーマンスが低下することがわかりました。サブ・サブフォルダ、サブ・サブ・サブフォルダ。 ファイル検索に適したアルゴリズムがあるかどうかを知りたい。再帰よりも優れたファイル検索アルゴリズムはありますか?
以下はファイル検索用の再帰コードです。私は、例
import java.io.File;
public class FInd {
public static void main(String[] args) {
File f = new File("D:/");
find(f);
}
public static void find(File f){
File []list = f.listFiles();
try{
for(int i=0;i<list.length && list.length>0;i++){
if(list[i].isFile() && (list[i].getName().contains(".pdf")) ||
list[i].getName().contains(".PDF"))
System.out.println(list[i].getAbsolutePath());
if(list[i].isDirectory()) find(list[i]);
}
}catch(Exception e){
}
}
}
このコードは、ファイルエクスプローラでオプションを検索するために比較したときに多少速いかまたは等しいように.pdfファイルを使用しています。私はあなたがマルチスレッドを使用することができ、この
*再帰*はアルゴリズムではなく、実装*の選択です。あなたには検索スペースがあり、ファイルを見つけるためにそれを探索する必要があります。だから、フォルダ間の名前と賢い関係がない限り、全体の空間を探索する必要があります。 – Arash
http://stackoverflow.com/questions/4852531/find-files-in-a-folder-using-java – prasanth
jdk7以上を使用している場合はFiles.walkFileTreeを使用してください。https://docs.oracle.com/javase/チュートリアル/ essential/io/find.html –