---
title: 'Verzeichnisse nach Dateien iterativ durchsuchen (vor Java 7)'
url: 'https://www.tutego.de/blog/javainsel/2014/02/verzeichnisse-nach-dateien-iterativ-durchsuchen-vor-java-7'
markdown: 'https://www.tutego.de/blog/javainsel/2014/02/verzeichnisse-nach-dateien-iterativ-durchsuchen-vor-java-7.md'
date: '2014-02-09'
description: 'Bevor NIO.2 in Java 7 einen FileVisitor einführte, musste ein Verzeichnis inklusive aller Unterverzeichnisse selbst abgelaufen werden, um Dateien zu finden. Um das selbst zu realisieren helfen uns die Datenstrukturen und die list(…)-Methode von File. Dabei sollen Dateien gefunden werden, deren Date…'
taxonomy:
  category:
    - Allgemein
---

# Verzeichnisse nach Dateien iterativ durchsuchen (vor Java 7)

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

## Verzeichnisse nach Dateien iterativ durchsuchen (vor Java 7)

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

Bevor NIO.2 in Java 7 einen FileVisitor einführte, musste ein Verzeichnis inklusive aller Unterverzeichnisse selbst abgelaufen werden, um Dateien zu finden. Um das selbst zu realisieren helfen uns die Datenstrukturen und die `list(…)`-Methode von File.

Dabei sollen Dateien gefunden werden, deren Dateinamen auf regulären Ausdrücken »matchen«. Ein `List`-Objekt speichert bereits gefundene Dateien, und ein Stack merkt sich via Tiefensuche das aktuelle Verzeichnis, in dem der Algorithmus gerade steht. Anders als bei DeleteTree nutzt diese Implementierung keine rekursiven Methodenaufrufe:

```java
import java.io.*;
import java.util.*;
import java.util.regex.Pattern;

public class FileFinder {
 public static List<File> find( String start, String extensionPattern ) {
 List<File> files = new ArrayList<>( 1024 );
 Queue<File> dirs = Collections.asLifoQueue( new LinkedList<File>() );
 File startdir = new File( start );
 Pattern p = Pattern.compile( extensionPattern, Pattern.CASE_INSENSITIVE );

 if ( startdir.isDirectory() )
 dirs.add( startdir );

 while ( dirs.size() > 0 )
 for ( File file : dirs.remove().listFiles() )
 if ( file.isDirectory() )
 dirs.add( file );
 else if ( p.matcher( file.getName() ).matches() )
 files.add( file );

 return files;
 }
}
```

Eine Nutzung der Utility-Methode ist einfach, wie etwa die folgenden Zeilen zeigen, um Dokumente mit den Dateiendungen .gif und .jpg zu finden:

```java
String path = new File( System.getProperty("user.dir") ).getParent();

System.out.println( "Suche im Pfad: " + path );

List<File> files = FileFinder.find( path, "(.*\\\\.gif$)|(.*\\\\.jpg$)" );

System.out.printf( "Fand %d Datei%s.%n",
 files.size(), files.size() == 1 ? "" : "en" );

for ( File f : files )
 System.out.println( f.getAbsolutePath() );
```

Kategorien: [Allgemein](https://www.tutego.de/blog/javainsel/category/allgemein/)

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

---

## Navigation

- Previous: [Javadoc-Überprüfung mit DocLint](https://www.tutego.de/blog/javainsel/2014/02/javadoc-berprfung-mit-doclint.md)
- Next: [openHAB für mehr Datenschutz in der Heimautomatisierung | heise online](https://www.tutego.de/blog/javainsel/2014/02/openhab-fuer-mehr-datenschutz-in-der-heimautomatisierung-heise-online.md)
