需求:
在某个文件夹下,找到文件Code.exe并启动
思路:
可以直接调静态方法,传参数(目录,文件名dir)。目录最好范围不要太大。
1.把非法的情况都拦截住,目录为空或不存在,或者目录不是文件夹是文件。
2.传入的目录dir不是null,存在,一定是目录对象。
3.判断当前目录下是否存在一级文件对象,以及是否可以拿到一级文件对象(长度大于0)。
4.遍历全部一级文件对象。
5.判断文件是否是文件,还是文件夹。
是文件(设置终结点),判断这个文件名是否是我们要找的,并用Runtime启动;
不是就继续往里套方法递归,直到找到。
注意:记得抛异常,代码才能执行。还有如果目录下缺少类似default.xml或resourse.xml文件,可能无法运行。正常打开可以运行,我还不太知道原因。
代码:
import java.io.File;
public class Test1 {
public static void main(String[] args) throws Exception {
searchFile(new File("E:/software0215"),"Code.exe");
}
/**
* 目录下搜素某个文件
* @param dir 目录
* @param fileName 要搜索的文件名称
*/
public static void searchFile(File dir,String fileName) throws Exception {
//1.把非法的情况都拦截住,目录为空或不存在,或者目录不是文件夹是文件
if (dir==null || !dir.exists() || dir.isFile()){
return;//代表无法搜索
}
//2.dir不是null,存在,一定是目录对象。
// 获取当前目录下的全部一级文件对象。
File[] files = dir.listFiles();
//3.判断当前目录下是否存在一级文件对象,以及是否可以拿到一级文件对象(长度大于0)
if (files !=null && files.length>0){
// 4.遍历全部一级文件对象。
for (File f : files) {
//5.判断文件是否是文件,还是文件夹
if (f.isFile()){
//是文件,判断这个文件名是否是我们要找的bufan
if (f.getName().contains(fileName)){
System.out.println("找到了:"+f.getAbsolutePath());
//启动exe文件
Runtime runtime=Runtime.getRuntime();
runtime.exec(f.getAbsolutePath());
}
}else {
// 是文件夹,继续重复这个过程(递归)
searchFile(f,fileName);
}
}
}
}
}