gpt4 book ai didi

java - 从文件夹中读取 Java 流中的文件名

转载 作者:行者123 更新时间:2023-11-30 05:53:50 25 4
gpt4 key购买 nike

我有一个目录,其中包含数百万个文件。我想将文件名读入 ArrayList。如果我将所有文件名读入 ArrayList,则会消耗更多内存。我怀疑如果目录中存在大量文件,Java 可能会抛出堆空间错误。有没有办法批量/批量读取目录中的文件,每次说 5 个文件名。

最佳答案

您可以使用Path.list为此,它将返回一个延迟评估的流:

List<String> fileNames = Path.list("path_to_directory")
.map(Path::getFileName)
.collect(Collectors.toList());

文件将被逐一处理,这将消耗更少的内存。但是,如果最终列表 fileNames 变得太大,您仍然可能会遇到内存问题。因此流管道中的终端(收集)操作可能会导致一些问题。

但是,例如,如果您直接在流上处理文件名(例如使用 forEach 而不收集它们),您可以避免将所有名称加载到内存中。

Path.list("path_to_directory")
.map(Path::getFileName)
.forEach(System.out::println);

//逐个打印文件,而不同时加载所有文件。

我希望这有帮助。

关于java - 从文件夹中读取 Java 流中的文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53498125/

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