Recherche récursivement des répertoires pour les fichiers en Java
Voici un exemple pour vous montrer comment rechercher un fichier nommé «post.php» dans le répertoire «/Users/example/websites» et tous ses sous-répertoires de manière récursive.
FileSearch.java
package com.example;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class FileSearch {
private String fileNameToSearch;
private List result = new ArrayList();
public String getFileNameToSearch() {
return fileNameToSearch;
}
public void setFileNameToSearch(String fileNameToSearch) {
this.fileNameToSearch = fileNameToSearch;
}
public List getResult() {
return result;
}
public static void main(String[] args) {
FileSearch fileSearch = new FileSearch();
//try different directory and filename :)
fileSearch.searchDirectory(new File("/Users/example/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");
}
}
}
}
Sortie
Searching directory ... /Users/example/websites Searching directory ... /Users/example/websites/wp-admin Searching directory ... /Users/example/websites/wp-admin/css Searching directory ... /Users/example/websites/wp-admin/images Searching directory ... /Users/example/websites/wp-admin/images/screenshots Searching directory ... /Users/example/websites/wp-admin/includes Searching directory ... /Users/example/websites/wp-admin/js Searching directory ... /Users/example/websites/wp-admin/maint Searching directory ... /Users/example/websites/wp-admin/network Searching directory ... /Users/example/websites/wp-admin/user Searching directory ... /Users/example/websites/wp-content Searching directory ... /Users/example/websites/wp-content/plugins //long list, omitted. Found 3 result! Found : /Users/example/websites/wp-admin/includes/post.php Found : /Users/example/websites/wp-admin/post.php Found : /Users/example/websites/wp-includes/post.php