java實現文件搜索主要使用file類和正則表達式,如下示例:
package?com.kiritor.util;import?java.io.File;
import?java.io.FileFilter;
import?java.util.Arrays;
import?java.util.Collections;
import?java.util.List;
/**
*?文件的相關操作類 *? *?@author?Kiritor */public?class?FileOperation?{
private?static?String?contentPath;
private?static?String?filePath;
private?static?File[]?fileList?=?null;//?保存文件列表,過濾掉目錄
public?FileOperation()?{
}
/**?構造函數的參數是壹個目錄?*/
public?FileOperation(String?path)?{
File?file?=?new?File(path);
if?(file.isDirectory())
this.contentPath?=?path;
else
this.filePath?=?path;
}
/**獲取文件列表*/
public?static?File[]?getFiles()?{
if?(contentPath?==?null)?{
File?file?=?new?File(filePath);
fileList?=?new?File[1];
fileList[0]?=?file;
return?fileList;
}
fileList?=?new?File(contentPath).listFiles(new?FileFilter()?{
/**使用過濾器過濾掉目錄*/
@Override
public?boolean?accept(File?pathname)?{
if(pathname.isDirectory())
{
return?false;
}else
return?true;
}
});
return?fileList;
}
/**?對當前目錄下的所有文件進行排序?*/
public?static?File[]?sort()?{
getFiles();
Arrays.sort(fileList,?new?FileComparator());
return?fileList;
}
public?static?void?tree(File?f,?int?level)?{
String?preStr?=?"";
for(int?i=0;?i<level;?i++)?{
preStr?+=?"";
}
File[]?childs?=?f.listFiles();
//返回壹個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件。
for(int?i=0;?i<childs.length;?i++)?{
System.out.println(preStr?+?childs[i].getName());
if(childs[i].isDirectory())?{
tree(childs[i],?level?+?1);
}
}
}
//?提供壹個"比較器"
static?class?FileComparator?implements?java.util.Comparator<File>?{
@Override
public?int?compare(File?o1,?File?o2)?{
//?按照文件名的字典順序進行比較
return?o1.getName().compareTo(o2.getName());
}
}
}