Méthode list() de la classe File en Java
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
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, retourne
null - Si le répertoire est vide, retourne un tableau vide
Exemple d'utilisation de base
Exemple
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
Interface FilenameFilter
FilenameFilterest une interface fonctionnelle qui ne contient qu'une seule méthode :
Exemple
Exemple d'utilisation d'un filtre
Exemple
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
- Problèmes d'autorisation: Si le programme n'a pas l'autorisation de lire le répertoire,
list()la méthode renverranull - 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 - Considérations de performance: Pour un répertoire contenant un grand nombre de fichiers,
list()la méthode peut consommer plus de mémoire - 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.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