要达到的效果是给出一个文件路径和文件名找到路径内对应的文件,并且输出文件路径。
首先进行问题分析,我们初步的想法是对每一个文件夹内的文件进行比较,如果和你输入的文件名相同,则匹配成功,输出路径。
我们可以利用 .listFiles() 来获取到一个目录下的所有以及目录和文件,这时候就可以进行分类,如果是文件,则判断是否匹配,如果是目录,则继续重复上述操作(获取该文件夹的所有第一级文件和目录,分别判断....)直到搜索完所有目录为止。
这时候可以发现,我们其实在搜索过程中不断执行定义的搜索方法本身,代码如下:
import java.io.File;
public class search {
public static void main(String[] args) {
searchfile(new File("D:/"),".gitignore");
}
/**
* 文件搜索
* @param dir 搜索路径
* @param name 搜索文件名
*/
public static void searchfile(File dir,String name){
if(dir ==null || !dir.exists() ||dir.isFile()){
return;
}
//获取搜索路径的所有第一级文件名和目录名
File[] files = dir.listFiles();
//确保有文件对象
if(files!=null&&files.length>0){
//进行循环拿到单个文件或目录
for (File file : files) {
//如果是文件则判断是否为需要的文件
if(file.isFile()){
if ( file.getName().contains(name)){
//输出绝对位置
System.out.println("找到了文件所在位置"+file.getAbsolutePath());
}
}
else {
//如果是文件夹,则需要再次进行一边搜索操作
searchfile(file,name);
}
}
}
}
}
结果如下: