wake-up-neo.com

Wie finde ich Unterverzeichnisse in einem Verzeichnis/Ordner?

Ich suche nach einer Möglichkeit, alle Namen von Verzeichnissen in einem bestimmten Verzeichnis abzurufen, aber keine Dateien.

Angenommen, ich habe einen Ordner namens Parent, und darin befinden sich 3 Ordner: Child1Child2 und Child3.

Ich möchte die Namen der Ordner erhalten, kümmere mich aber nicht um den Inhalt oder die Namen von Unterordnern in Child1, Child2 usw.

Gibt es eine einfache Möglichkeit, dies zu tun?

20
iaacp

Sie können String[] directories = file.list() verwenden, um alle Dateinamen aufzulisten.... Verwenden Sie dann eine Schleife, um die einzelnen Dateien zu überprüfen und verwenden Sie die Funktion file.isDirectory(), um Unterverzeichnisse abzurufen.

Zum Beispiel:

File file = new File("C:\\Windows");
String[] names = file.list();

for(String name : names)
{
    if (new File("C:\\Windows\\" + name).isDirectory())
    {
        System.out.println(name);
    }
}
20
bhuang3

Wenn Sie mit Java 7 arbeiten, sollten Sie die Unterstützung von versuchen 

package Java.nio.file 

Wenn Ihr Verzeichnis viele Einträge enthält, kann es mit der Auflistung beginnen, ohne sie zuerst alle in den Speicher zu lesen. Weitere Informationen finden Sie im Javadoc: http://docs.Oracle.com/javase/7/docs/api/Java/nio/file/Files.html#newDirectoryStream(Java.nio.file.Path,%20Java.lang .String)

Hier ist auch dieses Beispiel, das an Ihre Bedürfnisse angepasst ist:

public static void main(String[] args) {
    DirectoryStream.Filter<Path> filter = new DirectoryStream.Filter<Path>() {
        @Override
        public boolean accept(Path file) throws IOException {
            return (Files.isDirectory(file));
        }
    };

    Path dir = FileSystems.getDefault().getPath("c:/");
    try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir, filter)) {
        for (Path path : stream) {
            // Iterate over the paths in the directory and print filenames
            System.out.println(path.getFileName());
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}
24
Aksel Willgert
public static void displayDirectoryContents(File dir) {
    try {
        File[] files = dir.listFiles();
        for (File file : files) {
            if (file.isDirectory()) {
                System.out.println("Directory Name==>:" + file.getCanonicalPath());
                displayDirectoryContents(file);
            } else {
                System.out.println("file Not Acess===>" + file.getCanonicalPath());
            }
        }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

}

==== innerhalb der Klasse/Methode geben Sie Datei = URL ====== an

    File currentDir = new File("/home/akshya/NetBeansProjects/");
    displayDirectoryContents(currentDir);
}
0
user4890101