Méthode listFiles() de Java File

Java File Java File


listFiles()En Java, la méthode estjava.io.Fileune méthode importante fournie par la classe, utilisée pour obtenir tous les fichiers et sous-répertoires du répertoire courant. Cette méthode renvoie unFiletableau d'objets, chaqueFileobjet représente un fichier ou un sous-répertoire du répertoire.

Syntaxe de la méthode

listFiles()La méthode possède les formes surchargées suivantes :

public File[] listFiles()
public File[] listFiles(FilenameFilter filter)
public File[] listFiles(FileFilter filter)

Utilisation de base

Obtenir tous les fichiers et sous-répertoires du répertoire

Sans aucun paramètre, l'utilisation la plus basique consiste à appeler directementlistFiles()la méthode :

Exemple

import java.io.File;

public class ListFilesExample {
    public static void main(String[] args) {
        // Créer un objet File pour représenter le répertoire
        File directory = new File("C:/example");
       
        // Obtenir tous les fichiers et sous-répertoires du répertoire
        File[] files = directory.listFiles();
       
        // Parcourir et afficher les noms de fichiers
        if (files != null) {
            for (File file : files) {
                System.out.println(file.getName());
            }
        }
    }
}

Paramètres de méthode

Interface FilenameFilter

FilenameFilterest une interface fonctionnelle utilisée pour filtrer les noms de fichiers :

Exemple

File[] listFiles(FilenameFilter filter)

Exemple : lister uniquement.txtfiles

Exemple

File directory = new File("C:/example");
File[] textFiles = directory.listFiles((dir, name) -> name.endsWith(".txt"));

Interface FileFilter

FileFilterest également une interface fonctionnelle, mais elle est basée surFileobjets pour le filtrage :

Exemple

File[] listFiles(FileFilter filter)

Exemple : lister uniquement les répertoires

Exemple

File directory = new File("C:/example");
File[] subDirectories = répertoire.listFiles(File::isDirectory);

Notes

  1. Vérification de pointeur null: SiFilel'objet n'est pas un répertoire ou n'a pas la permission de lecture,listFiles()renverranull, donc vous devez vérifier la valeur de retour.

  2. Considérations de performance: Pour les répertoires contenant un grand nombre de fichiers,listFiles()peut consommer beaucoup de mémoire car il charge toutes les informations de fichier en une seule fois.

  3. Problèmes de tri: Le tableau de fichiers retourné ne garantit aucun ordre particulier. Si un tri est nécessaire, vous pouvez trier le tableau manuellement.

  4. Liens symboliques: Sur les systèmes Unix/Linux,listFiles()il suivra les liens symboliques.


Exemples d'applications pratiques

Lister récursivement tous les fichiers

Exemple

import java.io.File;

public class RecursiveFileListing {
    public static void listFilesRecursively(File directory) {
        File[] files = directory.listFiles();
        if (files != null) {
            for (File file : files) {
                if (file.isDirectory()) {
                    listFilesRecursively(file);
                } else {
                    System.out.println(file.getAbsolutePath());
                }
            }
        }
    }
   
    public static void main(String[] args) {
        listFilesRecursively(new File("C:/example"));
    }
}

Utilisation de l'API Stream de Java 8

Exemple

import java.io.File;
import java.util.Arrays;
import java.util.stream.Stream;

public class FileStreamExample {
    public static void main(String[] args) {
        File directory = new File("C:/example");
       
        // Utiliser Stream pour traiter les fichiers
        Stream.of(directory.listFiles())
              .filter(File::isFile)
              .map(File::getName)
              .forEach(System.out::println);
    }
}

Alternatives

À partir de Java 7, vous pouvez envisager d'utiliserjava.nio.filedans le packageFilesetPathclasses, qui offrent une façon plus moderne d'effectuer des opérations sur les fichiers :

Exemple

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;

public class NioFileListing {
    public static void main(String[] args) throws Exception {
        Path dir = Paths.get("C:/example");
       
        try (Stream<Path> stream = Files.list(dir)) {
            stream.filter(Files::isRegularFile)
                  .map(Path::getFileName)
                  .forEach(System.out::println);
        }
    }
}

Résumé

listFiles()La méthode est un outil de base dans les opérations sur les fichiers en Java. Maîtriser son utilisation est très important pour la gestion des fichiers. Dans le développement réel, choisissez la méthode de filtrage appropriée en fonction des besoins spécifiques, et faites attention à gérer les exceptions possibles. Pour les nouveaux projets, envisagez d'utiliser Java NIO. SaFilesclasse, qui offre des fonctionnalités de manipulation de fichiers plus puissantes et flexibles.

Java File Java File

Autres extensions