2017-02-19 46 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,但我實際上並不在乎它需要多少個父目錄,只要它小於3.(/a/b/file.txt是OK)

我的其他選擇是隻需獲取文件路徑字符串並計算文件和主文件夾之間出現「/」的次數。但是,該方法的問題是,我不能說明文件名包括轉義/(即「/」)

+0

爲什麼你不能使用循環? – CKing

回答

0

好的。這裏是你可以寫一個遞歸函數的東西。我可以給你一個骷髏。這個函數會返回你文件存在的深度。

 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 

     } 

此外,如果你想將搜索範圍限制3級僅通過一級recurFunc(字符串路徑,字符串文件名,INT級)和1時進入的目錄減少水平當等級爲0只檢查該級別是否包含您的文件。