---
title: 'Rekursiv nach Dateien/Ordnern suchen mit Files.find(…)'
url: 'https://www.tutego.de/blog/javainsel/2013/12/rekursiv-nach-dateienordnern-suchen-mit-files-find'
markdown: 'https://www.tutego.de/blog/javainsel/2013/12/rekursiv-nach-dateienordnern-suchen-mit-files-find.md'
date: '2013-12-31'
description: 'Neu in Java 8 ist die Methode find(…) in Files um Dateien nach gewissen Kriterien zu finden. final class java.nio.file.Files static Stream<Path> find(Path start, int maxDepth, BiPredicate<Path,BasicFileAttributes> matcher, FileVisitOption… options) throws IOException Sucht einen Verzei…'
taxonomy:
  category:
    - Insel
    - 'Java 8'
---

# Rekursiv nach Dateien/Ordnern suchen mit Files.find(…)

![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/)

## Rekursiv nach Dateien/Ordnern suchen mit Files.find(…)

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

Neu in Java 8 ist die Methode `find(…)` in `Files` um Dateien nach gewissen Kriterien zu finden.

final class `java.nio.file.Files`

- `static Stream<Path> find(Path start, int maxDepth, BiPredicate<Path,BasicFileAttributes> matcher, FileVisitOption… options) throws IOException`Sucht einen Verzeichnisbaum rekursiv ab und wendet auf jede Path den Filter (Prädikat) an. Falls der Filter zusagt, kommt der Path in den Ergebnis-Stream.

Beispiel und Hinweis: Finde alle Ordner unter dem Standard-Windows Bilder-Verzeichnis und gib sie aus:

`Files`.find( `Paths`.get( System.`getProperty`( „user.home“ ) )

.resolve( „Pictures“ ),

`Integer`.MAX\_VALUE,

(p,attr) -> `Files.isReadable( p )` && `attr.isDirectory()`

```java
).forEach( System.out::println );
```

Intern greift `find(…)` auf den gleichen Mechanismus wie `walk(…)` zurück, doch ist eine Eigenimplementierung mit Hilfe von `walk(…)` mitunter besser, da wir beim `visitFileFailed(…)` Fehler ignorieren können – bei `find(…)` führen Fehler direkt zum Abbruch. Bei Windows führt eine rekursive Suche schnell zu einem `java.nio.file.AccessDeniedException` durch einen Ordner, bei dem Java nicht dran darf und dann ist mit `find(…)` sofort Schluss.

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

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

---

## Navigation

- Previous: [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)
