是否Files.lines将所有行读入内存?

Jal*_*Jal 6 java file

文档中

从文件中读取所有行作为Stream

这是否意味着它正在加载整个文件?例如:

try (Stream<String> stream = Files.lines(Paths.get("myfilename.txt"))) {
        stream.forEach(x -> {
Run Code Online (Sandbox Code Playgroud)

如果myfilename100GB,是否会Files.lines加载整个100GB

shm*_*sel 5

不,它不会将整个文件加载到内存中。它在内部使用BufferedReader具有默认缓冲区大小的 a,重复调用readLine().


Izr*_*ruo 5

好了,您提供的链接已经声明了它:

与readAllLines不同,此方法不会将所有行读取到List中,而是在使用流时延迟填充。

因此,每次for-each调用您的块时,都会读取一个新行。