如何在目录/文件夹中查找子目录?

时间:2012-11-23 17:24:53

标签: java directory java-io

我正在寻找一种获取给定目录中所有目录名称的方法,但不是文件。

例如,假设我有一个名为Parent的文件夹,在其中我有3个文件夹:Child1 Child2Child3

我想获取文件夹的名称,但不关心Child1,Child2等内的子文件夹的内容或名称。

有一种简单的方法吗?

3 个答案:

答案 0 :(得分:24)

如果您使用的是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();
    }
}

答案 1 :(得分:20)

您可以使用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 :(得分:0)

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

}

====内部类/方法提供File = URL ======

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