现在的位置: 首页 > 综合 > 正文

黑马第20天,IO流(列出目录下所有内容-带层次)

2013年05月25日 ⁄ 综合 ⁄ 共 1336字 ⁄ 字号 评论关闭

/**
列出指定目录下文件或者文件夹,包含子目录中的内容。
也就是列出指定目录下的所有内容。

因为目录中还有目录,只要使用同一个列出目录功能的函数完成即可。
在列出过程中出现的还是目录的话,还可以再次调用本功能。
也就是函数自身调用自身。
这种表现形式,或者编程手法,称为递归。

递归要注意:
1.限定条件。
2.要注意递归的次数。尽量避免内存溢出。
*/

//毕老师的讲解我听的不是太明白,自己改进了一下,实现了递归列出文件夹和文件并带层次样式的。欢迎拍砖。

/**
seo2
. . 1.bmp
. . 2.txt
. . seo2xiaee
. . . . ee(1).rar
. . . . ee2.rar
. . . . ee3.rar
. . . . empty_dir
. . seo2xiaff
. . . . ffxiagg
. . . . . . abdef.rar
. . seo2xiass
. . . . ssxiade.txt
. . . . ssxiahh
. . . . . . 分类信息网源码-临沂市场信息网.rar
. . . . . . 多多淘宝客v8破解版本.rar
. . . . . . 多多淘宝客模板制作教程.rar
*/

import java.io.*;
class  FileDemo3
{
 public static void main(String[] args)
 {
  method2();
 }

 public static void method2() {
  File file = new File("E:\\seo2");
  System.out.println(file.getName());
  showDir(0, file);
 }

 public static String setLevel(int level) {
  StringBuilder sb = new StringBuilder();
  for(int i=0; i<level; i++) {
   sb.append(". . ");
  }
  return sb.toString();
 
 }
 public static void showDir(int level, File dir) {
  level++;
  File[] files = dir.listFiles();
  for(int i=0; i<files.length; i++) {
   System.out.println(setLevel(level) + files[i].getName());
   if(files[i].isDirectory()){
    ////System.out.println(setLevel(level) + files[i].getName());
    showDir(level, files[i]);
   } else {
    ////System.out.println(setLevel(level) + files[i].getName());
   }
  }

 }

 public static void method1() {
  int n = 8888;
  long sum = sub(n); //使用递归求和
  System.out.println("sum = " + sum);
  
 }
 public static long sub(int n) {
  if(n==1)
   return 1;
  return n + sub(n-1);
 }

}

抱歉!评论已关闭.