99 votes

Liste des fichiers dans un répertoire correspondant à un modèle en Java

Je suis à la recherche d'un moyen d'obtenir une liste de fichiers qui correspondent à un modèle (pref regex) dans un répertoire donné.

J'ai trouvé un tutoriel en ligne qui utilise apache commons-io colis avec le code suivant:

Collection getAllFilesThatMatchFilenameExtension(String directoryName, String extension)
{
  File directory = new File(directoryName);
  return FileUtils.listFiles(directory, new WildcardFileFilter(extension), null);
}

Mais qui retourne une collection de base (Selon les docs c'est une collection de java.io.File). Est-il un moyen de faire ce que renvoie un type sûr de collection générique?

150voto

Kevin Points 19613

Voir Fichier # listFiles (FilenameFilter) .

 File dir = new File(".");
File [] files = dir.listFiles(new FilenameFilter() {
    @Override
    public boolean accept(File dir, String name) {
        return name.endsWith(".xml");
    }
});

for (File xmlfile : files) {
    System.out.println(xmlfile);
}
 

15voto

jjnguy Points 62123

Le code suivant créera une liste de fichiers en fonction de la méthode d'acceptation de FileNameFilter .

 List<File> list = Arrays.asList(dir.listFiles(new FilenameFilter(){
        @Override
        public boolean accept(File dir, String name) {
            return name.endsWith(".exe"); // or something else
        }}));
 

0voto

OscarRyz Points 82553

Qu'en est-il d'un wrapper autour de votre code existant:

 public Collection<File> getMatchingFiles( String directory, String extension ) {
     return new ArrayList<File>()( 
         getAllFilesThatMatchFilenameExtension( directory, extension ) );
 }
 

Je vais lancer un avertissement si. Si vous pouvez vivre avec cet avertissement, alors vous avez terminé.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X