当前位置:  开发笔记 > 编程语言 > 正文

如何有效地获取目录中的(某些)文件名

如何解决《如何有效地获取目录中的(某些)文件名》经验,为你挑选了1个好方法。

我有一个包含20M +文件的目录.如果我试试

folder.list();

获取文件大约需要5~10分钟(有时甚至更多).我不需要所有的文件名,每次只需要少数几个.

在Linux中如果我尝试:

ls -l | head -n 100:这将永远

ls -f | head -n 100:响应在几秒钟内获得.

因此,如果我使用ProcessBuilder并运行类似的东西,我可以快速列出文件ls -f | head -n 100

是否有本地方式在目录中列出固定数量的文件而无需使用ProcessBuilder



1> Tunaki..:

是的,有使用Java NIO.2和类的方法DirectoryStream.此类对目录的条目实现惰性迭代.你可以得到的一个实例,DirectoryStream使用Files.newDirectoryStream(path)(你可以得到一个实例Path与静态工厂Paths.get).

如果您使用的是Java 8,则可以使用更简单的解决方案Files.list():

返回一个延迟填充Stream的元素,其中的元素是目录中的条目.列表不是递归的.

你可以拥有

List fileNames = Files.list(path)
                              .map(Path::getFileName)
                              .map(Path::toString)
                              .limit(100)
                              .collect(Collectors.toList());

检索给定的100个文件名path.

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有