需求:从D:盘中,搜索“QQ.exe”这个文件,找到后直接输出其位置并启动。
- 先找出D:盘下的所以一级文件对象
- 遍历全部一级文件对象,判断是否是文件
- 如果是文件,判断是否是自己想要的
- 如果是文件夹,需要继续进入到该文件夹,重复上述过程(递归思想)
代码实现:
import java.io.File;
import java.io.IOException;
public class RecursionTest5 {
public static void main(String[] args) throws IOException {
searchFile(new File("D:/"),"QQ.exe");
}
/**
* 去目录下搜索某个文件
* @param dir 目录
* @param fileName 要搜索的文件名称
*/
public static void searchFile(File dir ,String fileName) throws IOException {
//1、把非法的情况都拦截住
//dir.exists()路径不存在返回false,所以要取反进入到if中执行的语句
if(dir == null || !dir.exists() || dir.isFile()){
return; //代表无法搜索
}
//2、dir不是null,存在,一定是目录对象
File[] files = dir.listFiles();
//3、判断当前目录下是否存在一级文件对象,以及是否可以拿到一级文件对象
if(files != null && files.length > 0){
//4、遍历全部一级文件对象
for (File f : files) {
//5、判断文件是否是文件(文件夹、文件)
if(f.isFile()){
//是文件,判断这个文件是否是我们要找的
if(f.getName().contains(fileName)){
System.out.println("找到了:" + f.getAbsolutePath());
//找到之后直接运行
Runtime runtime = Runtime.getRuntime();
runtime.exec(f.getAbsolutePath());
}
}else {
//是文件夹,继续重复这个过程(递归)
searchFile(f,fileName);//f是现在遍历到的文件夹,fileName是需要查找的文件名
}
}
}
}
}