package com.itheima.d2_recusion;
import java.io.File;
/*
非规律化递归
案例:去D盘搜索一个叫eclipse.exe文件
*/
public class RecusionDemo4 {
public static void main(String[] args) {
// 2、调用方法:传入目录,文件名
searchFile(new File("D:\\"), "eclipse.exe");
}
/**
* 1、搜索某个目录下的全部文件,找到我们想要的文件
* @param dir 被搜索的源目录
* @param fileName 被搜索的文件名
*/
public static void searchFile(File dir, String fileName) {
// 3、判断dir是否是目录
if (dir != null && dir.isDirectory()) {
// 可以找了
// 4、提取当前目录下的一级对象
File[] files = dir.listFiles();
// 5、判断是否存在一级文件对象,存在才可以遍历
if (files != null && files.length > 0){
for (File file : files) {
// 6、判断当前遍历的一级文件对象是文件还是文件夹
if (file.isFile()){
// 7、是不是要找的,是就输出其路径
if (file.getName().contains(fileName)){
System.out.println("找到了:" + file.getAbsolutePath());
}
}
else{
// 8、说明是文件夹,需要继续递归寻找
searchFile(file, fileName);
}
}
}
}else{
System.out.println("您当前搜索得位置不是文件夹");
}
}
}
别人查到就输出路径查不到输出 System.out.println("您当前搜索得位置不是文件夹");
而我的确实查到了两个都输出,查不到了值输出 System.out.println("您当前搜索得位置不是文件夹");
咋回事啊?有人说是2头进了,我表示不理解。为啥同样的代码到别人那都没问题,到我这就成2头进了