Java File list()-Methode

Java File Java File


File.list()ist in Javajava.io.Fileeine von der Klasse bereitgestellte Instanzmethode, die verwendet wird, um die Liste der Namen aller Dateien und Unterverzeichnisse im angegebenen Verzeichnis abzurufen.

Methodensyntax

public String[] list()

Rückgabewert der Methode

list()Die Methode gibt ein String-Array zurück (String[]), das Folgendes enthält:

  • Wenn das aufrufende Objekt ein gültiges Verzeichnis darstellt, werden die Namen aller Dateien und Unterverzeichnisse unterhalb dieses Verzeichnisses zurückgegeben
  • Wenn das aufrufende Objekt kein Verzeichnis darstellt oder ein E/A-Fehler auftritt, wird zurückgegebennull
  • Wenn das Verzeichnis leer ist, wird ein leeres Array zurückgegeben

Grundlegendes Anwendungsbeispiel

Beispiel

import java.io.File;

public class ListFilesExample {
    public static void main(String[] args) {
        // Ein File-Objekt erstellen, das ein Verzeichnis darstellt
        File directory = new File("C:/MyFolder");
       
        // Die Liste der Dateien und Unterverzeichnisse im Verzeichnis abrufen
        String[] files = directory.list();
       
        // Prüfen, ob die Liste erfolgreich abgerufen wurde
        if (files != null) {
            System.out.println("Verzeichnisinhalt:");
            for (String file : files) {
                System.out.println(file);
            }
        } else {
            System.out.println("Der angegebene Pfad ist kein Verzeichnis oder es ist ein Fehler aufgetreten");
        }
    }
}

Version der Methodenüberladung

FileDie Klasse bietet auch eine andere Version derlist()Methode, die einen Filter akzeptieren kann:

Beispiel

public String[] list(FilenameFilter filter)

FilenameFilter-Schnittstelle

FilenameFilterist eine funktionale Schnittstelle, die nur eine Methode enthält:

Beispiel

boolean accept(File dir, String name)

Beispiel für die Verwendung eines Filters

Beispiel

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

public class FilteredListExample {
    public static void main(String[] args) {
        File directory = new File("C:/MyFolder");
       
        // Nur .txt-Dateien auflisten
        String[] textFiles = directory.list(new FilenameFilter() {
            @Override
            public boolean accept(File dir, String name) {
                return name.endsWith(".txt");
            }
        });
       
        // Ab Java 8+ können Lambda-Ausdrücke als Kurzschreibweise verwendet werden
        String[] textFiles = directory.list((dir, name) -> name.endsWith(".txt"));
       
        if (textFiles != null) {
            System.out.println("Textdateiliste:");
            for (String file : textFiles) {
                System.out.println(file);
            }
        }
    }
}

Hinweise

  1. Berechtigungsprobleme: Wenn das Programm keine Berechtigung zum Lesen des Verzeichnisses hat,list()die Methode wird zurückgebennull
  2. Symbolische Links:list()Die Methode folgt symbolischen Links und kann die tatsächlichen Datei-/Verzeichnisnamen zurückgeben, auf die die Links verweisen
  3. Leistungsüberlegungen: Bei einem Verzeichnis mit einer großen Anzahl von Dateien,list()die Methode kann mehr Speicher verbrauchen
  4. Relative Pfade: Die zurückgegebenen Dateinamen enthalten nur den Namensbestandteil, nicht den vollständigen Pfad

Alternative Methoden

In Java 7 und höher wird empfohlen, zu verwendenFilesKlassen undDirectoryStreamum Verzeichnisinhalte zu verarbeiten, da sie einen moderneren und flexibleren Weg bieten:

Beispiel

import java.nio.file.Files;
import java.nio.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());
            }
        }
    }
}

Zusammenfassung

File.list()Die Methode ist eine einfache und direkte Möglichkeit, Verzeichnisinhalte abzurufen, geeignet für einfache Dateisystemoperationen. Für komplexere Anforderungen sollten SieFilenameFilteroder auf die leistungsfähigeren Funktionen zurückgreifen, die die NIO.2-API bietet.

Java File Java File

Andere Erweiterungen