我有一个文件夹,其中包含数据文件(.txt
等)和子文件夹。
在Java中,如何在任何指定的目录路径中获取子文件夹的数量?
(因此不包括数据文件;仅计算子文件夹)
我已经阅读了有关计算.txt
个文件数量的信息,但似乎无法找到有关仅对子文件夹进行计数的信息。
我不知道从哪里开始,但想给你一个想法:
String directory = "C:\Users\ . \Desktop\ . \workspace\src\testfolder";
int numberOfSubfolders;
//what is numberOfSubfolders in testfolder?
所有帮助表示赞赏。
答案 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);