Méthode list() de la classe File en Java

Java File Java File


File.list()est en Javajava.io.Fileune méthode d'instance fournie par la classe, utilisée pour obtenir la liste des noms de tous les fichiers et sous-répertoires du répertoire spécifié.

Syntaxe de la méthode

public String[] list()

Valeur de retour de la méthode

list()La méthode retourne un tableau de chaînes (String[]), qui contient ce qui suit :

  • Si l'objet appelant représente un répertoire valide, retourne les noms de tous les fichiers et sous-répertoires de ce répertoire
  • Si l'objet appelant ne représente pas un répertoire ou si une erreur d'E/S se produit, retournenull
  • Si le répertoire est vide, retourne un tableau vide

Exemple d'utilisation de base

Exemple

import java.io.File;

public class ListFilesExample {
    public static void main(String[] args) {
        // Créer un objet File représentant un répertoire
        File directory = new File("C:/MyFolder");
       
        // Obtenir la liste des fichiers et sous-répertoires dans le répertoire
        String[] files = directory.list();
       
        // Vérifier si la liste a été obtenue avec succès
        if (files != null) {
            System.out.println("Contenu du répertoire :");
            for (String file : files) {
                System.out.println(file);
            }
        } else {
            System.out.println("Le chemin spécifié n'est pas un répertoire ou une erreur s'est produite");
        }
    }
}

Version de surcharge de méthode

FileLa classe fournit également une autre version de lalist()méthode, qui peut accepter un filtre :

Exemple

public String[] list(FilenameFilter filter)

Interface FilenameFilter

FilenameFilterest une interface fonctionnelle qui ne contient qu'une seule méthode :

Exemple

boolean accept(File dir, String name)

Exemple d'utilisation d'un filtre

Exemple

import java.io.File;
import java.io.FilenameFilter;

FilteredListExample class FilteredListExample {
    public static void main(String[] args) {
        File directory = new File("C:/MyFolder");
       
        // Lister uniquement les fichiers .txt
        String[] textFiles = directory.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".txt");
            }
        });
       
        // Java 8+ peut utiliser des expressions Lambda comme raccourci
        String[] textFiles = directory.list((, name) -> name.endsWith(".txt"));
       
        if (textFiles != null) {
            System.out.println("Liste des fichiers texte :");
            for (String file : textFiles) {
                System.out.println(file);
            }
        }
    }
}

Notes

  1. Problèmes d'autorisation: Si le programme n'a pas l'autorisation de lire le répertoire,list()la méthode renverranull
  2. Liens symboliques:list()La méthode suit les liens symboliques et peut renvoyer les noms réels des fichiers/répertoires pointés par les liens
  3. Considérations de performance: Pour un répertoire contenant un grand nombre de fichiers,list()la méthode peut consommer plus de mémoire
  4. Chemins relatifs: Les noms de fichiers renvoyés n'incluent que la partie nom, et non le chemin complet

Méthodes alternatives

À partir de Java 7, il est recommandé d'utiliserFilesclasses etDirectoryStreampour gérer le contenu d’un répertoire, car elles offrent une manière plus moderne et flexible :

Exemple

import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;

public class NioListExample {
    public static void main(String[] args) throws IOException {
        Path dir = Paths.get("C:/MyFolder");
       
        try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
            for (Path file : stream) {
                System.out.println(file.getFileName());
            }
        }
    }
}

Résumé

File.list()La méthode est un moyen simple et direct d’obtenir le contenu d’un répertoire, adapté aux opérations simples sur le système de fichiers. Pour des besoins plus complexes, envisagez d’utiliserFilenameFilterou tournez-vous vers les fonctionnalités plus puissantes offertes par l’API NIO.2.

Java File Java File

Autres extensions