方法递归(为了遍历一个文件夹内的所有文件夹,包括子文件夹内部的文件...)
递归是一种算法
形式上:方法调用自身的形式
递归的形式:
-
直接递归:方法自己调用自己。
-
间接递归:方法调用其他方法,其他方法又回调方法自己。
使用方法递归时需要注意: 递归如果没有控制好终止,会出现递归死循环,导致栈内存溢出错误。
递归算法三要素:
-
递归的公式:f(n) = f( n- 1 ) * n;
-
递归的终结点:f(1);
-
递归的方向必须走向终结点;
f(4) = f( 4- 1 ) * 4;
f(3) = f( 3- 1 ) * 3;
f(2) = f( 2- 1 ) * 2;
f(1) =1;
文件搜寻
采用递归算法(直接回调)
//形式参数内的file是文件对象,name是想要寻找的文件名称。public static void searchFile(File file, String name) {
//如果文件为空||文件地址不存在||搜寻的文件名称不存在if (file == null || !file.exists() || name == null || name.isEmpty()) {return;}//获得该文件夹内的所有文件File[] files = file.listFiles();//判断文件算法为空if (files != null) {//遍历该文件夹内所有文件or文件夹for (File f : files) {//如果是文件并且文件名称包含搜寻的文件名称if (f.isFile() && f.getName().contains(name)) {System.out.println(f.getAbsolutePath());//如果f是文件夹则再次回调searchFile方法重复之前步骤} else if (f.isDirectory()) {searchFile(f, name);}}}}