对于我正在做的一个项目,我制作了一个 java 程序来搜索用户输入指定的文件。
代码开始在用户指定的基本目录中搜索(即:C:)。它遍历此目录中的所有文件,检查文件名是否与用户给出的搜索词匹配,如果匹配,则将文件绝对路径添加到字符串中。如果文件是目录,则将其添加到稍后处理的列表中。
搜索完基本文件夹后,它将以相同的方式搜索/删除列表中的第一个目录(再次将找到的任何目录添加到列表中)并继续直到没有更多目录可供搜索。然后向用户显示找到的文件。
我的问题; 有没有更好的方法来搜索文件?也许立即搜索目录而不是将它们添加到列表中?任何建议都会很棒,在此先感谢!这是我的代码。
public String SearchDir(File directory){
this.directory = directory;
do{
File[] files = this.directory.listFiles();
if(files != null){
for(int i = 0; i < files.length; i++){
// The current file.
File currentFile = files[i];
// The files name without extension and path
// ie C:\Documents and Settings\myfile.file = myfile
String fileName = this .removeExtension(this.removePath(currentFile.getName()));
// Don't search hidden files
if(currentFile.isHidden()){
continue;
}
System.out.println(currentFile.getAbsolutePath());
// Check if the user wanted a narrow search
if(this.narrow){
// Narrow search = check if the file STARTS with the string given.
if(fileName.toLowerCase().startsWith(this.fileName.toLowerCase())){
this.found += currentFile.getAbsolutePath() + '\n';
this.foundXTimes++;
}
}
else{
// Non-Narrow search = check for the given string ANYWHERE in the file name.
if(fileName.toLowerCase().contains(this.fileName.toLowerCase())){
this.found += currentFile.getAbsolutePath() + '\n';
this.foundXTimes++;
}
}
// If the file is a directory add it to the buffer to be searched later.
if(currentFile.isDirectory()){
this.directoriesToSearch.add(currentFile);
}
}
if(!this.directoriesToSearch.isEmpty()){
this.directory = this.directoriesToSearch.remove(0);
}
}
} while(!this.directoriesToSearch.isEmpty());
if(!this.found.equals(""))
return this.found;
else
return "x";
}