2016-08-23 102 views
0

您好抱歉我的英語,但我需要一點幫助,這對您來說一定很容易,但我對我的生活無法想象。我想要做的是列出磁盤分區並列出其中的所有目錄和文件的名稱。到目前爲止,我已經達到了這一點:從磁盤分區打印文件名

File[] root= File.listRoots();   

System.out.println("Se encontraron " + root.length + " Particiones de Disco "); 

for(int i = 0 ; i < root.length ; i++){ 
    System.out.println(root[i].toString() + " existe= " + root[i].exists()); 
    if(root[i].exists()==true){ 
     System.out.println("Espacio Total: "+ root[i].getTotalSpace()); 
     System.out.println("Espacio Libre: "+ root[i].getFreeSpace()); 

     String[] listaDeArchivos = root[i].list(); 
     for(String lista:listaDeArchivos){ 
      System.out.println(lista); 
     } 
    } 
} 

有了這個,我得到列出硬盤divitions並在其中文件的第一行,但我需要一個週期,列出它的所有,所有文件的文件中。

+0

你的問題是?你有什麼麻煩? –

+0

我想打印硬盤上所有目錄和文件的名稱 – user3362366

+0

歡迎使用堆棧溢出。你可以改善你的問題。請閱讀[最小,完整和可驗證示例](http://stackoverflow.com/help/mcve)。當你的代碼沒有任何額外的東西顯示你的確切問題時,你會向志願幫助你的人表示敬意。此外,請格式化您的代碼以提高可讀性並消除滾動。 – zhon

回答

0

您需要設計一個遞歸函數來列出每個目錄中的所有目錄和所有文件。

在下面的代碼中,函數listStructure用於此目的。
從電話裏面這個功能您for loop

for(String lista:listaDeArchivos){ 
     System.out.println(lista); 
     listStructure(lista); 
     } 

功能列出目錄結構。

public void listStructure(String fileName) 
{ 
File file=new File(fileName); 
if(!file.exists()) 
{ 
System.out.println(fileName+" doesn't exists"); 
return; 
} 
if(!file.isDirectory())//check whether it's a directory or not 
{ 
System.out.println(fileName); 
return; 
} 
String files[]=file.list(); //if it's a directory then iterate through the directory 
for(int i=0;i<files.length;i++) 
{ 
listStructure(fileName+File.separator+files[i]);//recursively calling the function 
} 
}