2017-02-19 10 views
0

파일 경로에 몇 개의 하위 디렉토리가 있는지 계산하려고 할 때 가장 좋은 방법은 무엇입니까?파일 폴더 내의 중첩 수준 계산

예를 들어, /a/b/c/d/file.txt의 file.txt가 자신과 루트 폴더 사이에 3 개의 하위 디렉토리 만 갖고 있는지 확인하고자합니다. 내가 들어 본 적이없는이 일을하는 방법이 있습니까? 현재

내가 비슷한 무언가를 수행하여 상위 디렉토리가 file.txt를로부터 얼마나 많은 계산하는 방법을 사용하고 있습니다 :

boolean lessThan3Subdirectories(File textFile){ 
File homeFile = new File (/a); 
if (textFile.getParent() 
      .getParentFile() 
      .getParentFile() 
      .getParentFile() 
      != homeFile){ 
return false; 
} else { 
return true; 
} 
이 방법 나의 문제는이 셋을 확인하기 위해 하드 코딩되어있다

및 항상 3이지만 실제로 3보다 작 으면 얼마나 많은 상위 디렉토리가 있는지 상관하지 않습니다. (/a/b/file.txt는 정상입니다)

다른 옵션은 파일 경로 문자열을 가져 와서 파일과 홈 폴더 사이에 "/"가 나타나는 시간을 계산하십시오. 그 방법의 문제는 내가 탈출구/(즉 "/")를 포함하는 파일 이름을 고려할 수 없다는 것입니다.

+0

왜 루프를 사용할 수 없습니까? – CKing

답변

0

Ok. 여기서 재귀 함수를 작성할 수 있습니다. 나는 해골을 줄 수있다. 이 함수는 파일이 존재하는 깊이를 반환합니다. 당신은 단지 recurFunc (문자열 경로, 문자열 파일 이름, INT 수준)하고 레벨을 통과 3 단계로 검색을 제한 싶어 또한 경우

 int recurFunc(String path, String fileNameToCheck){ 

      //1. count all the files in given directory 
      //2. Write a for loop for each file checking if its a directory or file. 
      //3. if its a directory call recurFunc with directory name appended. (return 1 + recurFunc(directorypath)). This will give you the depth 
      //4. if its a file check if its your required file or not 
      //5. if its your file return 0;else skip 

     } 

수준 단지 0이면 디렉토리로가는 1로 수준을 감소 할 때 해당 레벨에 파일이 포함되어 있는지 확인하십시오.