黑马程序员技术交流社区

标题: 关于文件类的递归,分享一下 [打印本页]

作者: z6528328    时间: 2015-9-21 00:02
标题: 关于文件类的递归,分享一下
这是用递归将目录中的文件打印出来
  1. package test;
  2. import java.io.*;
  3. import java.util.*;
  4. public class test3 {
  5.     public static void main(String[] args ) throws IOException{
  6.         //listDemo("testdir");
  7.         //建立一个File对象,装有一个地址
  8.         File a =new File("d:\\testdir");
  9.         //将File对象和目录级数传入到该函数
  10.         listFilesDemo(0, a);
  11.         }
  12. public static void listFilesDemo( int level,File a){
  13.         //File f = new File("d:"+File.separator+a);
  14.         //先打印总目录
  15.         sop(getLevel(level)+a.getName());
  16.         level++;
  17.         //获取该目录下的文件名
  18.         File[] names = a.listFiles();
  19.         for (int i = 0; i < names.length; i++) {
  20.         //判断是否是目录
  21.             if (names[i].isDirectory()) {
  22.             //是目录的话,则传到该该方法,继续迭代
  23.                 listFilesDemo(level,names[i]);
  24.                 //当迭代完成后,从里到外打印文件
  25.                 sop(getLevel(level)+names[i]);
  26.             }
  27.             else{
  28.             //不是目录,则打印
  29.                 sop(getLevel(level)+names[i]);
  30.             }
  31.         }
  32.     }
  33.     public static String  getLevel(int level){
  34.         //建立一个字符串缓存区
  35.         StringBuilder sb = new StringBuilder();
  36.         sb.append("|---");
  37.         for (int i = 0; i < level; i++) {
  38.             //sb.append("|---");
  39.             //每进入一级目录,则多加一个“  ”
  40.             sb.insert(0, "   ");
  41.         }
  42.         //将其按字符串形式返回
  43.         return sb.toString();
  44.     }
  45.     public static void sop(Object obj){
  46.         System.out.println(obj);
  47.     }
复制代码








欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2