Comment itérer les fichiers D'un certain répertoire, en Java? [dupliquer]

possibilité de dupliquer:

la meilleure façon d'itérer à travers un répertoire en java?

je veux traiter chaque fichier dans un certain répertoire en utilisant Java.

Quelle est la façon la plus facile (et la plus courante) de le faire?

80
demandé sur Community 2011-02-07 03:53:08

4 réponses

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.
  }
148
répondu Mike Samuel 2014-04-11 14:54:28

je suppose qu'il y a tellement de façons de faire ce que vous voulez. Voici un moyen que j'utilise. Avec la bibliothèque commons.io , vous pouvez itérer 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/proper/commons-io/download_io.cgi

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 mettez une liste de extentions si vous voulez filtrer. Exemple: {".xml",".java"}

29
répondu jomaora 2016-09-27 10:40:18

Voici un exemple qui répertorie tous les fichiers sur mon bureau. vous devriez changer la variable path vers votre chemin.

au lieu d'imprimer le nom du fichier avec le système.hors.println, vous devriez 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]);
        }
    }
}
6
répondu WuHoUnited 2011-02-07 01:00:37

Utiliser de java.io.Fichier.listFiles

Ou

si vous voulez filtrer la liste avant itération (ou tout autre cas d'utilisation plus compliqué), utilisez apache-commons FileUtils. FileUtils.listFiles

3
répondu Amol Katdare 2011-02-07 01:01:13