2012-05-17 198 views
0

在隨機設置的嵌套文件夾和文件中,我需要獲取所有文件夾路徑,其中特定子文件夾的名稱是「x」。獲取特定文件夾路徑

例如,在下面的結構,我需要的程序只返回a\c\e\x回:

enter image description here

請參閱可以有嵌套任何級別的任何文件夾結構。

UPDATE: 我已經能夠編寫一個基本的程序來實現我想要的。但是,在我之前的圖中,在'dir d'下有一個目錄'dir x'時失敗。所以程序返回一個\ c \ e \ x和d \ x。你能幫助解決這個問題嗎?

公共類殭屍{

String folderName= new String(); 
ArrayList folderList= new ArrayList(); 

public static void main(String[] args) { 
    String path; 
    try { 
     path = new java.io.File(".").getCanonicalPath(); 
     Zombie zombie= new Zombie(); 
     getFilePaths(new File(path).listFiles(), zombie); 


     Iterator itr = zombie.folderList.iterator(); 
     while (itr.hasNext()) 
      System.out.println(itr.next()); 

    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

public static void getFilePaths(File[] fileList, Zombie zombie) { 
    for (int i=0; i<fileList.length; i++) { 
     File file= fileList[i]; 
     if (file.isDirectory()) { 
      if (containsDesiredFolder(file)) { 
       zombie.folderList.add(zombie.folderName+ "\\" + file.getName()); 
       zombie.folderName=""; 
      } else { 
       if (containsFoldersNotFiles(file)) { 
        zombie.folderName= zombie.folderName + "\\" + file.getName(); 
        getFilePaths(file.listFiles(), zombie); 
       } 
      } 
     } 
    } 
} 

public static boolean containsFoldersNotFiles(File file) { 
    boolean flag = false; 
    if (file.isFile()) return false; 

    File[] dummyList = file.listFiles(); 

    //no file or folder present 
    if (dummyList == null) 
     return flag; 

    for (int i = 0; i < dummyList.length; i++) { 
     File dummyFile = dummyList[i]; 
     if (dummyFile.isDirectory()) { 
      return true; 
     } 
    } 
    return flag; 
} 

public static boolean containsDesiredFolder(File file) { 
    boolean flag = false; 
    if (file.isFile()) return false; 
    File[] dummyList = file.listFiles(); 

    if (dummyList == null) 
     return flag; 

    for (int i = 0; i < dummyList.length; i++) { 
     File dummyFile = dummyList[i]; 
     if (dummyFile.isDirectory() && dummyFile.getName().equals("dirx")) { 
      flag = true; 
     } 
    } 
    return flag; 
} 

}

+0

主要依賴於用於容納文件和文件夾的數據結構,這裏使用的數據結構是什麼? –

回答

0
  1. 取種子的文件夾,在字符串類型folder_list變量附加其名稱。
  2. 如果種子文件夾是x及其子節點將folder_list添加到全局folder_array。
  3. 遍歷種子文件夾的所有文件夾。同時傳遞folder_list,並傳遞每個子文件夾作爲種子文件夾從1開始重複。

PS:這幾乎可以做到。

相關問題