【问题标题】:Getting amount of files in a directory Java获取目录Java中的文件数量
【发布时间】:2015-07-24 23:25:34
【问题描述】:

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

是应用程序文件夹

【问题讨论】:

  • 如何在 forEach 中添加一个System.out.println() 以查看它是否进入其中?其他选项是使用调试器运行它。

标签: java file path directory elements


【解决方案1】:

您好,我们从 Java 文档中看到:

getRoot() 返回此路径的根组件作为 Path 对象,如果此路径没有根组件,则返回 null。

这意味着您的代码肯定不会按照您的预期进行。 另外我认为这个问题已经在这里问过了,所以你可以检查一下thread

【讨论】:

    【解决方案2】:

    由于您使用的是 Java 8,因此您可以替换:

    Paths.get(applicationFolder.getAbsolutePath()).getRoot().forEach(p -> {
      elements++;
    });
    

    ...为:

    Stream.of(applicationFolder.listFiles()).forEach(p -> {
      elements++;
    });
    

    【讨论】:

      【解决方案3】:

      我想通了!

      一个非常干净和好的方法是这个:

      fileField.listFiles().length
      

      感谢大家的快速回复!

      【讨论】:

      • File.list().length 可能更有效,因为这是一个String 数组而不是File 数组
      • 哦,非常感谢!!!,但是我为什么要使用静态上下文呢?我正在尝试阻止静态访问
      • 它 (list()) 是一个 instance 方法。只是想突出显示该方法所在的类。
      猜你喜欢
      • 2011-01-17
      • 2014-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-29
      相关资源
      最近更新 更多