所以,我一直在尝试计算目录中元素的总数。它总是返回0.
这是我的代码:
public int getElementsInDirectory() {
Path path = Paths.get(applicationFolder.getAbsolutePath());
Logger.log("Directory", "Absoloute path: " + path);
if(path == null) {
Logger.log("Directory", "Path doesn't exist");
return 0;
}
Paths.get(applicationFolder.getAbsolutePath()).getRoot().forEach(p -> {
elements++;
});
return elements;
}
我已经尝试了几个文件正在计算的目录,但是仍然会返回0。
最好的部分是,路径也不是空的, 因为这是输出
[2015-07-25, Directory] Created folder!
[2015-07-25, Directory] Absoloute path: C:\Users\Yasin
所以它几乎正确地找到了路径,现在它只是元素。
哦,是的,差点忘了:
new File(System.getProperty("user.home") + "/");
是applicationFolder
答案 0 :(得分:0)
您好,从Java doc我们看到:
getRoot() 以Path对象的形式返回此路径的根组件,如果此路径没有根组件,则返回null。
这意味着您的代码肯定不会达到预期效果。 此外,我认为此问题已在此处提出,因此您可以查看此thread
答案 1 :(得分:0)
由于您使用的是Java 8,因此可以替换:
Paths.get(applicationFolder.getAbsolutePath()).getRoot().forEach(p -> {
elements++;
});
...为:
Stream.of(applicationFolder.listFiles()).forEach(p -> {
elements++;
});
答案 2 :(得分:0)
我明白了!
这是一个非常干净和好的方式:
fileField.listFiles().length
感谢大家的快速回复!