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

Posted 请叫我码农怪蜀黍

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过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递归思想实现以树形方式展现出该目录中的所有子目录和文件的主要内容,如果未能解决你的问题,请参考以下文章

Java递归实现树形结构的两种方式

基于递归算法,树形结构数据下业务场景,封装解决方法

基于递归算法,树形结构数据下业务场景,封装解决方法

java中树形结构怎么实现

算法初步--递归思想(java实现)

算法初步--递归思想(java实现)