文件夹目录中的子文件夹数

时间:2013-08-18 14:26:10

标签: java directory subdirectory

我有一个文件夹,其中包含数据文件(.txt等)和子文件夹。

在Java中,如何在任何指定的目录路径中获取子文件夹的数量?

(因此不包括数据文件;仅计算子文件夹)

我已经阅读了有关计算.txt个文件数量的信息,但似乎无法找到有关仅对子文件夹进行计数的信息。

我不知道从哪里开始,但想给你一个想法:

String directory = "C:\Users\ . \Desktop\ . \workspace\src\testfolder";
int numberOfSubfolders;

//what is numberOfSubfolders in testfolder?

所有帮助表示赞赏。

3 个答案:

答案 0 :(得分:8)

您可以使用FileFilter仅列出目录:

File file = new File("/tmp");
File[] files = file.listFiles(new FileFilter() {
    @Override
    public boolean accept(File f) {
        return f.isDirectory();
    }
});
System.out.println("Folders count: " + files.length);

Java File类是Composite Design Pattern的示例,因此您必须实际询问实例是否为文件:isFile()或者它是否为目录isDirectory()

如果你想计算目录,并且你正在使用Java 8. Files.find函数,可以用更简洁的方式(几乎是单行)做同样的事情:

long count = Files.find(
    Paths.get("/tmp"), 
    1,  // how deep do we want to descend
    (path, attributes) -> attributes.isDirectory()
).count() - 1; // '-1' because '/tmp' is also counted in

答案 1 :(得分:3)

使用File类,您可以列出其中的文件(如果它是文件夹/目录),您可以按所需的属性进行筛选(isDirectory()

然后计算结果。

答案 2 :(得分:1)

试试这个:

File dir = new File("yourDirPath");
int numberOfSubfolders;
File listDir[] = dir.listFiles();
for (int i = 0; i < listDir.length; i++) {
    if (listDir[i].isDirectory()) {
            numberOfSubfolders++;
        }
}
System.out.println("No of dir " + numberOfSubfolders);