java获取结构中无递归的文件数
有没有可能在不迭代所有文件的情况下获得一个文件夹(以及所有子文件夹)中的文件总数,并递归地进行更深入的操作
我的意思是这确实很容易,但也许有更好的解决方案
private int totalFileCounter = 0;
private void countFiles(File f) {
if (f.isDirectory()) {
for (File fi : f.listFiles()) {
countFiles(fi);
}
} else {
totalFileCounter++;
}
}
编辑:好吧,也许我的问题问得不太好。。。我的意思是,java、文件系统或其他东西是否有任何功能可以让我获得O(1)中的文件总数?所有的解决方案现在都有运行时O(n)
# 1 楼答案
一般来说,最简单的解决方案是最好的。我不会用一个字段来计算应该是函数的结果。如果同时从两个线程调用该方法,可能会得到错误的结果
# 2 楼答案
是的,使用^{} 进行迭代breadth-first search。下面是一个例子(未经测试):
# 3 楼答案
这能达到你的目的吗。它返回
Collection<File>