101 votes

Comment itérer sur les fichiers d'un certain répertoire, en Java ?

Duplicata possible :
Meilleur moyen d'itérer dans un répertoire en java ?

Je veux traiter chaque fichier dans un certain répertoire, en Java.

Quelle est la manière la plus simple (et la plus courante) de procéder ?

175voto

Mike Samuel Points 54712

Si vous avez le nom du répertoire dans myDirectoryPath ,

import java.io.File;
...
  File dir = new File(myDirectoryPath);
  File[] directoryListing = dir.listFiles();
  if (directoryListing != null) {
    for (File child : directoryListing) {
      // Do something with child
    }
  } else {
    // Handle the case where dir is not really a directory.
    // Checking dir.isDirectory() above would not be sufficient
    // to avoid race conditions with another process that deletes
    // directories.
  }

32voto

jomaora Points 414

Je suppose qu'il y a tellement de façons de faire ce que l'on veut. Voici une méthode que j'utilise. Avec la bibliothèque commons.io, vous pouvez itérer sur les fichiers d'un répertoire. Vous devez utiliser la méthode FileUtils.iterateFiles et vous pouvez traiter chaque fichier.

Vous pouvez trouver l'information ici http://commons.apache.org/io/api-release/index.html

Voici un exemple :

Iterator it = FileUtils.iterateFiles(new File("C:/"), null, false);
        while(it.hasNext()){
            System.out.println(((File) it.next()).getName());
        }

vous pouvez changer null et mettre une liste d'extensions si vous voulez filtrer. Exemple {".xml", ".java"}

9voto

WuHoUnited Points 2601

Voici un exemple qui liste tous les fichiers sur mon bureau. Vous devez changer la variable path pour votre chemin.

Au lieu d'imprimer le nom du fichier avec System.out.println, vous devez placer votre propre code pour opérer sur le fichier.

public static void main(String[] args) {
    File path = new File("c:/documents and settings/Zachary/desktop");

    File [] files = path.listFiles();
    for (int i = 0; i < files.length; i++){
        if (files[i].isFile()){ //this line weeds out other directories/folders
            System.out.println(files[i]);
        }
    }
}

5voto

amol Points 4305

Utilisez java.io.File.listFiles
Ou
Si vous voulez filtrer la liste avant l'itération (ou tout autre cas d'utilisation plus compliqué), utilisez apache-commons FileUtils. FileUtils.listFiles

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