Rekursiv alle text-Dateien finden Sie im Verzeichnis

Ich versuche dem Namen alle text-Dateien in einem Verzeichnis. Wenn das Verzeichnis hat Unterverzeichnisse habe ich dann auch bekommen wollen, alle text-Dateien in diese als gut. Ich bin mir nicht sicher, wie dieser Prozess weiter für eine beliebige Anzahl von Unterverzeichnissen.

Recht der code jetzt unten bekommt nur alle text-Dateien im aktuellen Verzeichnis und Unterverzeichnissen in das Verzeichnis. Für jedes Unterverzeichnis gefunden, es findet auch keine text-Dateien und tieferen Unterverzeichnissen. Das problem ist, dass wenn diese tiefere Unterverzeichnisse haben noch eine tiefere Unterverzeichnisse, dann bin ich nicht bei der Suche nach text-Dateien. Dies scheint ein problem, das erfordert eine Rekursion, weil ich nicht weiß, wie tief diese gehen soll.

Hier ist mein code bisher:

File rootDirectory = new File(rootDir);
if (rootDirectory.isDirectory()) {
    System.out.println("Valid directory");

    File[] listOfFiles = rootDirectory.listFiles(); 
    for (int i = 0; i < listOfFiles.length; i++) {
        String iName = listOfFiles[i].getName();
        if (listOfFiles[i].isFile()) {
            if (iName.endsWith(".txt") || iName.endsWith(".TXT")) {
                System.out.println("File: "+iName);
            }
        }
        if (listOfFiles[i].isDirectory()) {
            System.out.println("Directory: "+iName);

            File[] subList = listOfFiles[i].listFiles();
            for (int j = 0; j < subList.length; j++) {
                String jName = subList[j].getName();
                if (subList[j].isFile()) {
                    if (jName.endsWith(".txt") || jName.endsWith(".TXT")) {
                        System.out.println("\tFile: "+jName);
                    }
                }
                if (subList[j].isDirectory()) {
                    System.out.println("\tDirectory: "+jName);
                }
            }
        }
    }
}
else System.out.println("Invalid directory");

Bearbeiten: Habe es funktioniert, danke Olaf Dietsche:

public void findFiles(File root, int depth) {
    File[] listOfFiles = root.listFiles();
    for (int i = 0; i < listOfFiles.length; i++) {
        String iName = listOfFiles[i].getName();
        if (listOfFiles[i].isFile()) {
            if (iName.endsWith(".txt") || iName.endsWith(".TXT")) {
                for (int j = 0; j < depth; j++) System.out.print("\t");
                System.out.println("File: "+iName);
            }
        }
        else if (listOfFiles[i].isDirectory()) {
            for (int j = 0; j < depth; j++) System.out.print("\t");
            System.out.println("Directory: "+iName);
            findFiles(listOfFiles[i], depth+1);
        }
    }
}
InformationsquelleAutor asimes | 2012-11-18
Schreibe einen Kommentar