遍历文件目录源代码

遍历文件目录,需要进行递归输出子目录中的文件。遍历目录,判断是否是文件比较简单,主要是输出格式的控制。这里采用一个fileLevel来表示文件的层数,用于输出时的缩进

[java]  view plain copy
  1. import java.io.File;  
  2.   
  3. public class ReadDirectory {  
  4.         // 文件所在的层数  
  5.         private int fileLevel;  
  6.   
  7.         /** 
  8.          * 生成输出格式 
  9.          * @param name 输出的文件名或目录名 
  10.          * @param level 输出的文件名或者目录名所在的层次 
  11.          * @return 输出的字符串 
  12.          */  
  13.         public String createPrintStr(String name, int level) {  
  14.                 // 输出的前缀  
  15.                 String printStr = "";  
  16.                 // 按层次进行缩进  
  17.                 for (int i = 0; i < level; i ++) {  
  18.                         printStr  = printStr + "  ";  
  19.                 }  
  20.                 printStr = printStr + "- " + name;  
  21.                 return printStr;  
  22.         }  
  23.   
  24.         /** 
  25.          * 输出初始给定的目录 
  26.          * @param dirPath 给定的目录 
  27.          */  
  28.         public void printDir(String dirPath){  
  29.                 // 将给定的目录进行分割  
  30.                 String[] dirNameList = dirPath.split("\\\\");  
  31.                 // 设定文件level的base  
  32.                 fileLevel = dirNameList.length;  
  33.                 // 按格式输出  
  34.                 for (int i = 0; i < dirNameList.length; i ++) {  
  35.                         System.out.println(createPrintStr(dirNameList[i], i));  
  36.                 }  
  37.         }  
  38.   
  39.         /** 
  40.          * 输出给定目录下的文件,包括子目录中的文件 
  41.          * @param dirPath 给定的目录 
  42.          */  
  43.         public void readFile(String dirPath) {  
  44.                 // 建立当前目录中文件的File对象  
  45.                 File file = new File(dirPath);  
  46.                 // 取得代表目录中所有文件的File对象数组  
  47.                 File[] list = file.listFiles();  
  48.                 // 遍历file数组  
  49.                 for (int i = 0; i < list.length; i++) {  
  50.                         if (list.isDirectory()) {  
  51.                                 System.out.println(createPrintStr(list.getName(), fileLevel));  
  52.                                 fileLevel ++;  
  53.                                 // 递归子目录  
  54.                                 readFile(list.getPath());  
  55.                                 fileLevel --;  
  56.                         } else {  
  57.                                 System.out.println(createPrintStr(list.getName(), fileLevel));  
  58.                         }  
  59.                 }  
  60.         }  
  61.           
  62.         public static void main(String[] args) {  
  63.                 ReadDirectory rd = new ReadDirectory();  
  64.                 String dirPath = "D:\\有道词典";  
  65.                 rd.printDir(dirPath);  
  66.                 rd.readFile(dirPath);  
  67.         }  
  68. }  

输出结果如下:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值