我有一个代码来搜索特定位置的文件。我想添加时间限制来停止搜索。如果我说在5000毫秒内搜索,那么搜索必须在5000毫秒后停止并显示结果。 任何人都可以建议最好的方法吗?
public class FileSearch {
final private int FOLDER=1,FILE=2,BOTH=3;
private Pattern pat;
private int filter;
private List<String> searchList = new ArrayList<String>();
public void setFilter(int filter) {
this.filter = filter;
}
public void setPat(Pattern pat) {
this.pat = pat;
}
private void findFileNames(File file){
File[] list = file.listFiles();
if (list != null)
for (File fil : list) {
if (fil.isDirectory()) {
findFileNames(fil);
} else {
matchName(fil.getName());
}
}
}
private void findFolderNames(File file){
File[] list = file.listFiles();
if (list != null)
for (File fil : list) {
if (fil.isDirectory()) {
matchName(fil.getName());
findFolderNames( fil);
}
}
}
public void findFile(File file) {
switch(this.filter){
case FOLDER:
findFolderNames(file);
break;
case FILE:
findFileNames(file);
break;
case BOTH:
File[] list = file.listFiles();
if (list != null)
for (File fil : list) {
if (fil.isDirectory()) {
findFolderNames(fil);
} else {
matchName(fil.getName());
}
}
findFileNames(file);
findFolderNames(file);
break;
default:
break;
}
}
public void startFileSearch() {
FileSearch ff = new FileSearch();
Scanner scan = new Scanner(System.in);
System.out.println("Enter the file name to be searched (Can use regular expressions).. ");
String name = scan.next();
System.out.println("Enter the directory where to search ");
String directory = scan.next();
System.out.println("Enter filter (1.FOLDER/2..FILE/3.BOTH) to search ");
int filter = scan.nextInt();
ff.setPat(Pattern.compile(name));
ff.setFilter(filter);
ff.findFile(new File(directory));
}
private void matchName(String fileName){
if (this.pat.matcher(fileName).find()) {
System.out.println(fileName);
this.searchList.add(fileName);
}
}
}