我想实现用递规在磁盘中找一个指定的文件,当找到第一个符合条件的文时,打印出文件路径后退出程序!
下面这段程序的问题是:当找到第一个符合条件的文件后,不会退出,直到把所有磁盘检查完毕后才退出~
请帮忙看看,问题出在哪里了?谢谢!
import java.io.*;
public class FindFile
{
private String fileName;
public FindFile(String fileName)
{
this.fileName = fileName;
}
public String find()
{
File[] objfile = new File("").listRoots();
String strPath = "";
String path = "无此文件";
for(int i=0;i<objfile.length;i++)
{
String fpath = objfile[i].getPath();
System.out.println(fpath);
strPath = this.doFind(fpath,fileName);
if(!strPath.equals("无此文件"))
{
path = strPath;
}
}
return path;
}
//strPathName是表示在什么路径范围内查找,strFileName是表示要找文件的名字
public String doFind(String strPathName,String strFileName)
{
String path = "无此文件";//最终返回目标文件的路径
File f = new File(strPathName);
File[] flist = f.listFiles();
String str ;
for(int i=0;i<flist.length;i++)
{
str = flist[i].getPath() + " "+flist[i].getName();
str = flist[i].getName();
if(flist[i].isFile())
{
if(str.equals(strFileName))
{
System.out.println(flist[i].getAbsolutePath());
path = flist[i].getAbsolutePath();
break; //这里break后会继续执行else if里面doFind()方法...
}
}
else if(flist[i].isDirectory())
{
doFind(flist[i].getAbsolutePath(),strFileName);
}
}
return path;
}
public static void main(String[] args)
{
System.out.println("找到目标文件: "+ new FindFile("8.exe").find());//找一个名为8.exe的文件
}
}
望高人指点一下
[此贴子已经被作者于2007-4-3 15:41:22编辑过]