폴더 및 하위 폴더의 특정 확장자를 가진 파일을 카운트하는 코드를 작성하고 있습니다. 이 코드는 작고 큰 큰 폴더에서 계산할 때 잘 작동합니다.디렉토리 및 하위 디렉토리 (예 : 루트 C : // 또는 D : //)에서 많은 수의 파일 수를 계산하는 방법
루트에서 계산하면 문제가 시작됩니다 (예 : D : //). 몇 시간 동안 계산되지만 중간에 멈추십시오. 나는 코드가 많은 수의 파일과 폴더를 읽는 것이 효율적이지 않다고 가정합니다.
public static int countFiles(File directory, String ext) {
int count = 0;
for(File file : directory.listFiles()) {
System.out.println(file);
if(file.isDirectory()) {
count += countFiles(file, ext);
}
String textFile = file.toString();
if(textFile.endsWith(ext)){
count++;
}
}
오류 표시
스크린 샷 회선 이상 여기
- 내 전체 코드 CLICK HERE
'File'이 유효한 파일 참조가 아니면 'listFiles'를 호출하면'null '결과가 반환됩니다. 'File # exists'를 사용하면 디렉토리를 읽기 전에'File' 레퍼런스가 존재하는지 여부를 확인할 수 있습니다 ... 또한'File'은 지름길이나 심볼릭 링크 (또는 함수 조인트 나 윈도우즈 스페셜 등)를 좋아하지 않습니다 폴더) – MadProgrammer
라인 77과 79는 어느 라인입니까? – immibis
@MadProgrammer는 여전히 충분하지 않습니다. 다른 프로그램이'exists' 체크 후에'listFiles' 전에 파일을 삭제할 수 있기 때문입니다. – immibis