---
title: 'Verzeichnislistings (DirectoryStream/Stream) holen'
url: 'https://www.tutego.de/blog/javainsel/2013/12/verzeichnislistings-directorystreamstream-holen'
markdown: 'https://www.tutego.de/blog/javainsel/2013/12/verzeichnislistings-directorystreamstream-holen.md'
date: '2013-12-31'
description: 'In der Klasse Files finden sich vier Methoden (eine mehr unter Java 8), um zu einem gegebenen Verzeichnis alle Dateien und Unterverzeichnisse aufzulisten: final class java.nio.file.Files static Stream<Path> list(Path dir) throws IOException (neu in Java 8) static DirectoryStream<Path> …'
taxonomy:
  category:
    - Insel
    - 'Java 7'
    - 'Java 8'
---

# Verzeichnislistings (DirectoryStream/Stream) holen

![Illustration einer tropischen Insel mit Palmen und einem hohen Berg](https://www.tutego.de/blog/javainsel/user/themes/tutego/images/insel-cover.jpg)# Java Blog für Programmierer

[Java Blog für Programmierer](https://www.tutego.de/blog/javainsel/)

## Verzeichnislistings (DirectoryStream/Stream) holen

31.12.2013 · [Christian Ullenboom](https://www.tutego.de/blog/javainsel/author/admin/)

In der Klasse `Files` finden sich vier Methoden (eine mehr unter Java 8), um zu einem gegebenen Verzeichnis alle Dateien und Unterverzeichnisse aufzulisten:

final class `java.nio.file.Files`

- `static Stream<Path> list(Path dir) throws IOException (neu in Java 8)`
- `static DirectoryStream<Path> newDirectoryStream(Path dir) throws IOException`
- static DirectoryStream<Path> `newDirectoryStream`(Path dir, DirectoryStream.Filter<? super Path> filter) throws IOException
- `static DirectoryStream<Path> newDirectoryStream(Path dir, String glob) throws IOException`

Die Rückgabe DirectoryStream<T> ist ein `Closeable` (und somit `AutoCloseable`) sowie `Iterable`<T>, und so unterscheidet sich die Möglichkeit zur Anfrage der Dateien im Ordner grundsätzlich von der Methode `list(…)` in der Klasse File, die immer alle Dateien in einem Feld auf einmal zurückliefert. Bei einem DirectoryStream wird Element für Element über den `Iterator` geholt; trotz des Namensanhangs „`Stream`“ ist der DirectoryStream kein Strom im Sinne von `java.util.stream`. Ein `Stream`<`String`> hingegen liefert die kompakte Methode `list(Path)`, sie nutzt intern einen DirectoryStream.

```java
try ( DirectoryStream<Path> files =
Files.newDirectoryStream( Paths.get( "c:/" ) ) ) {
 for ( Path path : files )
 System.out.println( path.getFileName() );
}
```

Aus der Tatsache, dass die Dateien und Unterverzeichnisse nicht in einem Rutsch geholt werden, leitet sich die Konsequenz ab, dass der DirectoryStream/Stream<`String`> geschlossen werden muss, da nicht klar ist, ob der Benutzer wirklich alle Dateien abholt oder nach den ersten 10 Einträgen aufhört. Die Schnittstelle DirectoryStream erweitert die Schnittstelle `Closeable` (und die ist `AutoCloseable`, weshalb unser Beispiel ein try-mit-Ressourcen nutzt) und `Stream` implementiert `AutoCloseable`, daher ist es guter Stil, den DirectoryStream/Stream am Ende zu schließen, um blockierte Ressourcen freizugeben. try-mit-Ressourcen gibt immer etwaige Ressourcen frei, auch wenn es beim Ablaufen des Verzeichnisses zu einer Ausnahme kam.

Kategorien: [Insel](https://www.tutego.de/blog/javainsel/category/insel/), [Java 7](https://www.tutego.de/blog/javainsel/category/java-7/), [Java 8](https://www.tutego.de/blog/javainsel/category/java-8/)

[← Alle Beiträge](https://www.tutego.de/blog/javainsel/)

---

## Navigation

- Previous: [Dateiinhalte lesen/schreiben mit Utility-Klasse Files](https://www.tutego.de/blog/javainsel/2013/12/dateiinhalte-lesenschreiben-mit-utility-klasse-files.md)
- Next: [Rekursives Ablaufen des Verzeichnisbaums mit Stream oder FileVisitor](https://www.tutego.de/blog/javainsel/2013/12/rekursives-ablaufen-des-verzeichnisbaums-mit-stream-oder-filevisitor.md)
