【发布时间】:2019-04-29 02:27:25
【问题描述】:
我有一个目录,里面有数百万个文件。我想将文件名读入 ArrayList。如果我将所有文件名读入一个 ArrayList,它会消耗更多内存。我怀疑如果目录中存在大量文件,Java 可能会抛出堆空间错误。 有没有办法分块/批量读取目录中的文件,每次说5个文件名。
【问题讨论】:
-
我不确定,因为我没有包含数百万个文件的目录。但也许你可以使用流?例如 Arrays.stream(Paths.get("path/to/file").toFile().list());你可以使用 StringStream 来做你想做的事情与 fileNames
-
即使我使用像 Arrays.stream(Paths.get("path/to/file").toFile().list()); 这样的代码,这部分Paths.get("path/to/file").toFile().list() 仍然会将所有文件名带入内存。我的问题是使用更少的内存来获取所有文件名。
标签: java file arraylist heap-memory file-read