gpt4 book ai didi

java - 通过java如何在不使用list()的情况下计算目录中的文件数

转载 作者:行者123 更新时间:2023-12-01 16:51:14 25 4
gpt4 key购买 nike

不使用file.list()Files.list(path),如何统计目录中的文件数量?

我只想要一个数字,不需要详细信息。请给我一个快速的方法。

最佳答案

如果您唯一关心的是不创建 List<File>您可以使用 Stream API .

long count = Files.list(Paths.get(path))
.filter(p -> p.toFile().isFile())
.count();
System.out.println("count = " + count);

编辑 该代码段并不意味着速度很快。仅针对不使用list()的要求提供。或listFiles() 。 ;-)

下面对计算包含 200 万个文件的目录中的文件数量的不同方法进行了小幅比较。

所有命令都会执行两次。第一次执行时删除了文件缓存,第二次执行紧随第一次执行之后。

              | ls    | dir.list() | dir.listFiles() | Files.list(path)
--------------+-------+------------+-----------------+------------------
dropped cache | 9,120 | 5,518 | 5,879 | 59,175
filled cache | 946 | 1,992 | 2,401 | 51,179

以毫秒为单位的时间(逗号是千位分隔符)

下面详细介绍了执行的命令。

ls

ls -f /tmp/huge-dir | wc -l

dir.list()

File hugeDir = new File("/tmp/huge-dir");
int numberFiles = hugeDir.list().length;

dir.listFile()

File hugeDir = new File("/tmp/huge-dir");
int numberFiles = hugeDir.listFiles().length;

Files.list(路径)

Path path = Paths.get("/tmp/huge-dir");
long numberFiles = Files.list(path)
.filter(p -> p.toFile().isFile())
.count();

基于这些数字。使用dir.list().length看起来这不是一个糟糕的解决方案。

关于java - 通过java如何在不使用list()的情况下计算目录中的文件数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39715607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com