[英]Search files in directory and its sub directory in java
我想知道在目錄中搜索文件及其子目錄中更快的方法。 但是,我知道父目錄,但不知道祖父母目錄。 例如c:/ temp / test / * / 111 / abx.txt
我嘗試了File.walkFileTree,但不確定如何使用它,因為它對我不起作用。
請幫忙。 謝謝
您可以將Files類與Stream API一起使用,以完成此任務,如下所示:
Files.walk(Paths.get(path))
.filter(Files::isRegularFile)
.forEach(System.out::println);
這是一個示例,向您展示如何從目錄“ / Users / mkyong / websites”及其所有子目錄中遞歸搜索名為“ post.php”的文件。
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class FileSearch {
private String fileNameToSearch;
private List<String> result = new ArrayList<String>();
public String getFileNameToSearch() {
return fileNameToSearch;
}
public void setFileNameToSearch(String fileNameToSearch) {
this.fileNameToSearch = fileNameToSearch;
}
public List<String> getResult() {
return result;
}
public static void main(String[] args) {
FileSearch fileSearch = new FileSearch();
// try different directory and filename :)
fileSearch.searchDirectory(new File("/Users/mkyong/websites"), "post.php");
int count = fileSearch.getResult().size();
if (count == 0) {
System.out.println("\nNo result found!");
} else {
System.out.println("\nFound " + count + " result!\n");
for (String matched : fileSearch.getResult()) {
System.out.println("Found : " + matched);
}
}
}
public void searchDirectory(File directory, String fileNameToSearch) {
setFileNameToSearch(fileNameToSearch);
if (directory.isDirectory()) {
search(directory);
} else {
System.out.println(directory.getAbsoluteFile() + " is not a directory!");
}
}
private void search(File file) {
if (file.isDirectory()) {
System.out.println("Searching directory ... " + file.getAbsoluteFile());
// do you have permission to read this directory?
if (file.canRead()) {
for (File temp : file.listFiles()) {
if (temp.isDirectory()) {
search(temp);
} else {
if (getFileNameToSearch().equals(temp.getName().toLowerCase())) {
result.add(temp.getAbsoluteFile().toString());
}
}
}
} else {
System.out.println(file.getAbsoluteFile() + "Permission Denied");
}
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.