【问题标题】:Java: Is there a way to find the count of files in a directory without having to list all the files? [duplicate]Java:有没有办法在不必列出所有文件的情况下查找目录中的文件数? [复制]
【发布时间】:2014-02-21 16:32:27
【问题描述】:

我目前使用以下代码来查找目录中的文件数:

File[] files = dir.listFiles();
count = files.length;

这样做的主要问题是,如果目录中的文件数量很大(100k 或以上),则 cpu 使用率会大大增加。是否有任何内存有效的方法来获取文件数?

我不想执行任何本地调用。

【问题讨论】:

  • 刚刚编辑了我的问题。我不想使用任何本地调用。
  • 请不要用“十万”,这里懂的人少。用 1k 换 1000 或 100k 换 10 万。 1m等

标签: java file count


【解决方案1】:

我不认为你可以。或者至少不使用标准的 Java 工具。

您可以将有关目录和文件的信息保存在您在程序中定义的某种数据结构中,或者只是将计数存储在某处,但这仅在您想多次获取有关同一目录的信息时才有用。

【讨论】:

    【解决方案2】:

    使用标准 Java 没有直接的方法。

    您可以通过计算一次然后跟踪添加和删除内容的次数来近似它。仅当您是唯一一个添加和删除文件的人时,这才有效。

    稍微复杂一点的是使用 java nio 功能来监视文件夹的更改。

    对文件夹计数一次,然后监视文件夹的更改,并在添加和删除文件时更新您的计数。

    http://docs.oracle.com/javase/tutorial/essential/io/notification.html

    【讨论】:

      【解决方案3】:

      如果您想获得更好的性能,请尝试将 listFiles() 方法从 File 类更改为 list() 方法。

      【讨论】:

      • 试过了。 list 比 listFiles 稍微好一点,但它确实会消耗更多的 CPU。
      猜你喜欢
      • 1970-01-01
      • 2019-09-06
      • 1970-01-01
      • 1970-01-01
      • 2020-09-12
      • 2015-05-07
      • 1970-01-01
      • 2020-08-31
      • 1970-01-01
      相关资源
      最近更新 更多