2016-08-23 83 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 
} 
}