关于目录遍历功能的实现

今天回顾Java的IO流的知识,看到遍历目录的知识点,有点犯难!不过幸好最后还是让我敲出来了!

调用类:

 1 public class DirectoryTraversal {
 2     public static void main(String[] args) {
 3         System.out.println("展示指定目录下的所有子目录");
 4         File file = new File("D:\\imooc");
 5         FileUtil.listDirectory(file);
 6         System.err.println("遍历结束");
 7         // 文件进行listFiles(),操作,结果为空!下面的语句出现空指针异常
 8         // File file1=new File("D:\\imooc\\test.txt");
 9         // System.out.println(file1);
10         // File[] files1=file1.listFiles();
11         // for(File ff:files1){
12         // System.out.println(ff);
13         // }
14     }
15 }

工具类:

import java.io.File;

//File的工具类,用于遍历数组
public class FileUtil {
    public static void listDirectory(File f){    
        File[] files=f.listFiles();
        if(files!=null && files.length>0){
            for(File file:files){
                System.out.println(file);
//                listDirectory(file);
            }
        }
    }
}

遍历功能主要涉及到了递归这个知识点!没有详细了解,只知道是程序调用自身

5的阶乘的实现:

 1 //递归案例
 2 public class Recursive {
 3     public static int sum = 1;
 4 
 5     public static void main(String[] args) {
 6         System.out.println(f(5));
 7     }
 8 
 9     /**
10      * 计算5阶乘(result=5*4*3*2*1)
11      * 
14      */
15     public static int f(int n) {
16         if (n == 1) {
17             return 1;
18         } else {
19             return f(n - 1) * n;
20         }
21     }
22 }

参考:递归原理解析,要注意的是这边文章中的5的阶乘的实现有问题,阶乘方法中的else语句应该写成:

 return f(n - 1) * n;

 

posted @ 2015-03-11 22:41  天叨叨  阅读(446)  评论(0编辑  收藏  举报