关于目录遍历功能的实现
今天回顾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;