package org.akalius.test;
import java.io.File;
/**
* @author Haiping Gong 2008-1-22
*
*/
public class FileSearcher {
private static String searchPath="D:\\Akalius\\work";
private static String searchFileName="URL.txt";
private static File file;
public FileSearcher(String path) {
file=new File(path);
if(!file.isDirectory()){
System.out.println("must be directory");
}
}
/**
* @param args
*/
public static void main(String[] args) {
FileSearcher searcher=new FileSearcher(searchPath);
searcher.findFileName(file,searchFileName);
}
private void findFileName(File f,String name) {
File[] files=file.listFiles();
for(int i=0;i<files.length;i++){
File subFile=files[i];
if(subFile.isFile() && subFile.getName().equals(name)){
System.out.println("search ok, "+subFile.getAbsolutePath());
break;
}
else if(subFile.isDirectory()){
findFileName(subFile,name);
}
else{
continue;
}
}
}
}
递归方法,Java本身效率就很慢,使用递归效率不高,可以写个非递归的方法。代码是深度遍历,如果所找的文件估计所在的目录层次较少,则可以使用List来广度遍历,这样可能效率会高点。
import java.io.File;
/**
* @author Haiping Gong 2008-1-22
*
*/
public class FileSearcher {
private static String searchPath="D:\\Akalius\\work";
private static String searchFileName="URL.txt";
private static File file;
public FileSearcher(String path) {
file=new File(path);
if(!file.isDirectory()){
System.out.println("must be directory");
}
}
/**
* @param args
*/
public static void main(String[] args) {
FileSearcher searcher=new FileSearcher(searchPath);
searcher.findFileName(file,searchFileName);
}
private void findFileName(File f,String name) {
File[] files=file.listFiles();
for(int i=0;i<files.length;i++){
File subFile=files[i];
if(subFile.isFile() && subFile.getName().equals(name)){
System.out.println("search ok, "+subFile.getAbsolutePath());
break;
}
else if(subFile.isDirectory()){
findFileName(subFile,name);
}
else{
continue;
}
}
}
}
递归方法,Java本身效率就很慢,使用递归效率不高,可以写个非递归的方法。代码是深度遍历,如果所找的文件估计所在的目录层次较少,则可以使用List来广度遍历,这样可能效率会高点。