首页 > 代码库 > 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件

通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件

当初在开始接触Java时  学习File部分的一个小练习  挺有意思

一开始是通过看 北京圣思园 张龙老师的视频开始学校java的,必须强烈推荐,真很棒。

 

功能实现:主要实现以树形方式展现出该目录中的所有子目录和文件。 另外, 在展现的时候将目录排在上面,文件排在下面。每一层要加上缩进。 文件是jre6文件夹,我想这文件夹就不用我说什么了。换上自己的文件路径就可以了。

 

 

[java] view plain copy
 
  1. import java.io.File;  
  2.   
  3. public class FileTest2  
  4. {  
  5.       
  6. public static int count = 0;  
  7. public static void parse(File[] files)  
  8. {  
  9.     if(files.length == 0)  
  10.     {  
  11.         FileTest2.count--;  
  12.         System.out.println();  
  13.         return;  
  14.     }  
  15.     else  
  16.     {  
  17.         for(File f : files)  
  18.         {  
  19.             if(f.isDirectory())  
  20.             {  
  21.                 FileTest2.count++;  
  22.                 for(int i = 1; i <= FileTest2.count; i++)  
  23.                 {  
  24.                     System.out.print("\t");  
  25.                 }  
  26.    
  27.                 System.out.println(f.getName());  
  28.                 File[] files2 = f.listFiles();  
  29.    
  30.                 FileTest2.parse(files2);  
  31.             }  
  32.    
  33.         }  
  34.         for(File f : files)  
  35.         {  
  36.             if(!f.isDirectory())  
  37.             {  
  38.                 for(int i = 0; i <= FileTest2.count; i++)  
  39.                 {  
  40.                     System.out.print("\t");  
  41.                 }  
  42.                 System.out.println(f.getName());  
  43.             }  
  44.         }  
  45.         FileTest2.count--;  
  46.     }  
  47.    
  48. }  
  49. public static void main(String[] args)  
  50. {  
  51.     File file = new File("C:\\Program Files\\Java\\jre6");  
  52.     File[] files = file.listFiles();  
  53.     FileTest2.parse(files);  
  54. }  
  55.   
  56. }  
  57. **************************第二种****************************************
  58.  1 /*
     2     使用递归找出某目录("C:\\JavaProducts")下的所有子目录以及子文件
     3 */
     4 
     5 import java.util.*;
     6 import java.io.*;
     7 
     8 public class FileRecursionPrintDemo{
     9     public static void main(String[] args){
    10         List<String> paths = new ArrayList<String>();
    11         paths = getAllFilePaths(new File("C:\\JavaProducts"),paths);
    12         for(String path:paths){
    13             System.out.println(path);    
    14         }
    15     }
    16     
    17     private static List<String> getAllFilePaths(File filePath,List<String> filePaths){
    18         File[] files = filePath.listFiles();
    19         if(files == null){
    20             return filePaths;    
    21         }    
    22         for(File f:files){
    23             if(f.isDirectory()){
    24                 filePaths.add(f.getPath());
    25                 getAllFilePaths(f,filePaths);
    26             }else{
    27                 filePaths.add(f.getPath());
    28             }    
    29         }
    30         return filePaths;
    31     }
    32 }

通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件