Java File list()-Methode
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
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ückgegeben
null - Wenn das Verzeichnis leer ist, wird ein leeres Array zurückgegeben
Grundlegendes Anwendungsbeispiel
Beispiel
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
FilenameFilter-Schnittstelle
FilenameFilterist eine funktionale Schnittstelle, die nur eine Methode enthält:
Beispiel
Beispiel für die Verwendung eines Filters
Beispiel
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
- Berechtigungsprobleme: Wenn das Programm keine Berechtigung zum Lesen des Verzeichnisses hat,
list()die Methode wird zurückgebennull - Symbolische Links:
list()Die Methode folgt symbolischen Links und kann die tatsächlichen Datei-/Verzeichnisnamen zurückgeben, auf die die Links verweisen - Leistungsüberlegungen: Bei einem Verzeichnis mit einer großen Anzahl von Dateien,
list()die Methode kann mehr Speicher verbrauchen - 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.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