天天看點

列出目錄下的所有檔案名,帶層次

public class FileDemo {

   public static void main(String[] args) {

 File dir=new File("G:\\360驅動大師目錄");

 showDir(dir,0);

 

 }

   //列印目錄下第一級内容

   public static void  listDemo(){

 File f=new File("c:\\");

 String[] names=f.list();//調用list方法的對象必須是目錄

 for(String name:names){

 System.out.println(name);

 }

   }

   

   //擷取系統磁盤名稱

   public static void listRootsDemo(){

 File[] files=File.listRoots();//擷取盤符

 for(File f:files){

 System.out.println(f);

 }



   }

   //過濾方式擷取檔案

   public static void listDemo_2(){

 File dir=new File("F:\\SVN_D\\DD\\src\\com\\ygl");

   String[]  arr=dir.list(new FilenameFilter(){



@Override

public boolean accept(File dir, String name) {

// TODO Auto-generated method stub

/*if(name.endsWith(".java")){

return true;

}

else{

return false;

}*/

return name.endsWith(".java");


}

   
 

   
 

   
 

   });

   System.out.println(arr.length);

   for(String name:arr){

   
 System.out.println(name);

   }

   }

   //listFiles()擷取目前目錄名稱對象

       public static void listFiles_Demo(){

 File dir=new File("G:\\");

File[] files=dir.listFiles();//目前目錄下内容

for(File f:files){

System.out.println(f.getName());//檔案名,不帶路徑

}

   }

   

       //列出目錄下的所有檔案,帶層次

       public static void showDir(File dir,int level){

     
 //System.out.println(getLevel(level)+dir.getName());

     


     
 if(dir!=null){

     
if(!dir.isHidden()&&dir.isDirectory()){

     
System.out.println(getLevel(level)+dir.getName());

     
 level++;

     
File[] files=dir.listFiles();

     
if(files!=null){

     
for(int i=0;i<files.length;i++){

     
showDir(files[i],level);

     
}

     
}

     
}else{

     
System.out.println(getLevel(level)+dir);

     
}

          }

     }

       public static String getLevel(int level){

     
 

     
 StringBuilder sb=new StringBuilder();

     
 sb.append("|--");

     
 for(int x=0;x<level;x++){

     
 sb.insert(0,"   ");

     
 

     
 }

     
 return sb.toString();

       }



       }