Das Beispiel zeigt eine Methode, die alle Verzeichnisse eines bestimmten
Namens in einer
ArrayList speichert und diese zurück gibt. Sie erwartet
fünf Parameter:
| File root |
Das Verzeichnis, das als Ausgangspunkt der Suche dient. Es wird mit
seinen Unterverzeichnissen rekursiv durchsucht. |
| String dirName |
Der Name des gesuchten Verzeichnisses |
| ArrayList<File> list
|
Die ArrayList, die die gefundenen File-Objekte speichert. Beim Aufruf
der Methode kann hier null angegben werden. Wird beim
Methodenaufruf hier eine vorbelegte ArrayList übergeben, so werden
die ermittelten File-Objekte am Ende hinzugefügt. |
| boolean caseSensitivity |
Soll die Suche nach dem Verzeichnisnamen zwischen Groß- und
Kleinschreibung unterscheiden, muss hier true angegeben werden. |
| boolean printEmpty |
Wird dieser Wert true gesetzt, so werden die Namen leerer
Verzeichnisse auf der Konsole zusätzlich ausgegeben. |
Die Methode führt zunächst einige Sicherheitsabfragen durch, in
denen sichergestellt wird, dass das Ausgangsverzeichnis, der Name des
gesuchten Verzeichnisses und eine ArrayList übergeben wurden.
Dann wird der Inhalt des Ausgangsverzeichnisses in einem File-Array
abgelegt und auf weitere Verzeichnisse durchsucht. Hierbei wird die
Prüfung des Namens in Abhängigkeit vom Parameter caseSensitivity
ggf. unter Beachtung der Schreibweise durchgeführt. Repräsentiert
das File-Objekt ein Verzeichnis, so wird die Methode erneut
aufgerufen. Als Ausgangsverzeichnis wird in diesem Fall das gefundene
Verzeichnis übergeben. Da die ArrayList mit weitergegeben
wird, kann sie incrementell weiter gefüllt und im Baum allmählich
abgestiegen werden.