Durchsucht Verzeichnisse rekursiv nach Dateien in Java

Durchsucht Verzeichnisse rekursiv nach Dateien in Java

Hier ist ein Beispiel, das Ihnen zeigt, wie Sie eine Datei mit dem Namen "post.php" rekursiv aus dem Verzeichnis "/Users/example/websites" und allen Unterverzeichnissen durchsuchen.

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");
     }
      }

  }

}

Ausgabe

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