文件夹目录中的子文件夹数
Posted
技术标签:
【中文标题】文件夹目录中的子文件夹数【英文标题】:Number of subfolders in a folder directory 【发布时间】:2013-08-20 10:35:43 【问题描述】:我有一个包含数据文件(.txt
等)和子文件夹的文件夹。
在 Java 中,如何获取指定目录路径中的子文件夹数量?
(所以不包括数据文件;只计算子文件夹)
我已阅读有关计算 .txt
文件数量的信息,但似乎找不到有关仅计算子文件夹的任何信息。
我不知道从哪里开始,但给你一个想法:
String directory = "C:\Users\ . \Desktop\ . \workspace\src\testfolder";
int numberOfSubfolders;
//what is numberOfSubfolders in testfolder?
感谢所有帮助。
【问题讨论】:
【参考方案1】:当我看到在上面的解决方案中完全没有用的 for 循环时,我感到非常害怕。把它剪下来然后做:
File dir = new File("yourDirPath");
File listDir[] = dir.listFiles();
int numberOfSubfolders = listDir.length;
这不仅将代码减半,而且迭代次数也大大减少,因为随着目录数量的增加,您将更多地运行 for 循环。这只运行一次。
【讨论】:
您能解释一下这个答案与accepted answer 有何不同吗?此代码还计算子文件夹的数量吗?它似乎计算了所有文件。【参考方案2】:您可以使用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
【讨论】:
太棒了!正是我需要的。谢谢! 好答案。但是有没有办法获得实际的最大深度?【参考方案3】:试试这个:
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);
【讨论】:
【参考方案4】:使用File
类,您可以列出其中的文件(如果是文件夹/目录),您可以按所需的属性进行过滤(isDirectory()
)
然后统计结果。
【讨论】:
以上是关于文件夹目录中的子文件夹数的主要内容,如果未能解决你的问题,请参考以下文章