获取Java目录中的文件数量

时间:2015-07-24 23:25:35

标签: java file path directory elements

所以,我一直在尝试计算目录中元素的总数。它总是返回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

3 个答案:

答案 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

感谢大家的快速回复!