Recherche dans les répertoires récursivement pour le fichier en Java

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