Подтвердить что ты не робот

Как найти подкаталоги в каталоге/папке?

Я ищу способ получить все имена каталогов в данном каталоге, но не файлы.

Например, скажем, у меня есть папка с именем Parent, а внутри у меня есть 3 папки: Child1 Child2 и Child3.

Я хочу получить имена папок, но не интересуюсь содержимым или именами подпапок внутри Child1, Child2 и т.д.

Есть ли простой способ сделать это?

4b9b3361

Ответ 1

Вы можете использовать String[] directories = file.list() для отображения всех имен файлов, затем используйте цикл для проверки каждого подфайла и используйте функцию file.isDirectory() для получения подкаталогов.

Например:

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);
    }
}

Ответ 2

Если вы используете java 7, вы можете попробовать использовать поддержку, предоставленную в

package java.nio.file 

Если ваш каталог содержит много записей, он сможет начать перечислять их, не прочитав их сначала в памяти. читайте больше в javadoc: http://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#newDirectoryStream(java.nio.file.Path,%20java.lang.String)

Здесь также приведен пример, соответствующий вашим потребностям:

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();
    }
}

Ответ 3

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();
    }
}

}

==== внутри класса/Метод предоставляет файл = URL ======

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