2015-02-06 6 views
0

경로를 취하고 해당 폴더와 디렉토리를 검색하여 파일을 인쇄하는 검색 방법을 만들려고합니다. 또한 결국에는 전체 파일 수를 인쇄하고 싶습니다.디렉토리의 파일 수를 계산하는 방법

public static void main(String[] args) { 

    search("C:\\Program Files (x86)\\Adobe"); 

} 
    public static void search(String folderpath){ 
    File directory = new File(folderpath); 
    int numberOfFiles = 0; 
    for (File element : directory.listFiles()){ 
     if(element.isDirectory()){ 
      search(element.getAbsolutePath()); 
     } 
     else{ 
      numberOfFiles++; 
      System.out.println(element); 
     } 
    }; 
    System.out.println(numberOfFiles); 
}; 

결과는 같다 :

folder 
1 
2 
3 
folder2 
1 
folder3 
4 
5 

그리고 그것은 numberOfFiles에 대해 하나 개의 마지막 번호까지 오지 않을

여기 내 코드입니다. 누구든지 모든 폴더에 대해 numberOfFiles을 인쇄하는 것을 중단하고 끝에 한 번만 인쇄하는 방법을 알고 있습니까?

답변

3

귀하의 방법은 좋은 생각 인 재귀이지만,이 방법 자체에 배치하여 재귀의 끝에 뭔가를 쓸 수 없습니다 : 여기

는 같은 코드가 보일 것입니다 방법 적어도 이쪽). 그래서 여기에 가능한 수정이 있습니다. search을 얼마나 많은 파일이 있는지 계산하는 방법 (직접 파일 및 해당 하위 디렉토리의 파일)을 만드십시오.

public static void main(String[] args) {  
    System.out.println("# of files "+search("C:\\Program Files (x86)\\Adobe"));  
} 
public static int search(String folderpath){ 
    File directory = new File(folderpath); 
    int numberOfFiles = 0; 
    for (File element : directory.listFiles()){ 
     if (element.isDirectory()) { // count the files for this subdir 
      numberOfFiles += search(element.getAbsolutePath()); 
     } 
     else { // one more file 
      numberOfFiles++; 
      System.out.println(element); 
     } 
    } 
    // return the number of files for this dir and its sub dirs 
    return numberOfFiles; 
} 
4

현재 폴더에있는 파일 수를 계산하고 이것을 로컬 변수에 저장합니다. 이 메서드는 재귀 적이므로 검사중인 현재 폴더의 파일 수만 가져옵니다.

더하기 각 하위 폴더의 파일 수를 반환하십시오. 그런 다음 클라이언트 메소드에서 필요에 따라 결과를 사용하십시오. (

public static void main(String[] args) { 
    String pathToInspect = "C:\\Program Files (x86)\\Adobe" 
    int numberOfFiles = search(pathToInspect); 
    System.out.println("Number of files in " + pathToInspect + ": " + numberOfFiles); 
} 

//changed return type from void to int 
public static int search(String folderpath) { 
    File directory = new File(folderpath); 
    int numberOfFiles = 0; 
    for (File element : directory.listFiles()) { 
     if(element.isDirectory()) { 
      //add the number of files of subfolder 
      numberOfFiles += search(element.getAbsolutePath()); 
     } else { 
      numberOfFiles++; 
     } 
    } 
    //return number of files found 
    return numberOfFiles; 
} 
관련 문제