재귀를 사용하여 특정 유형의 파일을 검색했습니다 (예 : .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 파일을 사용하고 있습니다. 나는 그것을
입력 각 폴더, 당신은 당신이 당신의 CPU보다 더 많은 스레드를 한 경우에도 ... 새 스레드에서 시작 ... 당신은 멀티 스레딩 사용할 수있는이
* 재귀 *는 알고리즘이 아니며 구현 * 선택 사항입니다. 검색 공간이있는 것 같으며 파일을 찾기 위해 탐색해야합니다. 따라서 폴더 사이에 이름과 현명한 관계가 없으면 전체 공간을 탐색해야합니다. – 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 –