Java: Récupère tous les fichiers avec un suffixe spécifique dans un dossier (avec des sous-dossiers) dans un fichier[]


Comment puis-je inclure chaque fichier avec un suffixe spécifique (disons *.txt) dans un dossier (y compris les sous-dossiers du dossier) dans un tableau File[]?

Author: Priidu Neemre, 2015-04-13

1 answers

Cela fonctionne sur Windows pour moi:

import java.io.File;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.attribute.BasicFileAttributes;
import java.util.ArrayList;

public class FileFinder {

public static class Finder extends SimpleFileVisitor<Path>{
    private final PathMatcher theMatcher;
    ArrayList<File> myFileArray = new ArrayList<File>();

    Finder(String pattern) {
        theMatcher = FileSystems.getDefault().getPathMatcher("glob:"+pattern);
    }

    void find (Path file){
        Path name = file.getFileName();
        if (name != null && theMatcher.matches(name)){
            myFileArray.add(file.toFile());
        }
    }

    File[] returnFileArray(){
        File[] x = new File[myFileArray.size()];
        return myFileArray.toArray(x);
    }

    @Override
    public FileVisitResult visitFile (Path file,BasicFileAttributes attrs){
        find(file);
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult preVisitDirectory (Path dir, BasicFileAttributes attrs){
        find(dir);
        return FileVisitResult.CONTINUE;
    }

    @Override
    public FileVisitResult visitFileFailed (Path file, IOException exc) {
        System.err.println(exc);
        return FileVisitResult.CONTINUE;
    }
}

public static void main(String[] args) throws IOException {
    String startingPoint = "D:\\test"; //Your starting directory
    String findPattern = "*.txt";

    Path startingDir = Paths.get(startingPoint);
    Finder theFinder = new Finder(findPattern);
    Files.walkFileTree(startingDir, theFinder);

        for (File f : theFinder.myFileArray) {
        System.out.println(f.getName());
        }
    }
}

Faites-moi savoir si cela a aidé! (Mes excuses pour le formatage du code)

 1
Author: Bavaria1971, 2015-04-14 00:39:44