如何在Java 8中逐行读取文件?

时间:2015-07-24 09:06:46

标签: java java-8

在Java 8中,我看到在Files类中添加了名为lines()的新方法,可用于在Java中逐行读取文件。它适用于大文件吗?我的意思是我们可以加载前1000行然后第二组1000行。我有1GB的巨大文件,它会起作用吗?

有人可以共享代码段如何使用它吗?

2 个答案:

答案 0 :(得分:10)

  

它适用于大文件吗? [...]我有1GB的巨大文件,是吗?   工作?

据我所知,它也适用于大文件(但我还没试过):

try(Stream<String> lines = Files.lines(path)){
    lines.filter(...).map(...)....foreach(...);
}
  

我的意思是我们可以加载前1000行然后第二组1000行。

一次读取多少行是Files.lines特有的实现(可能使用BufferedReader,但我可能错了)。

答案 1 :(得分:0)

来自API(由我鼓舞)

  

从文件中读取所有行作为流。与readAllLines不同,此方法不会将所有行读入List,而是在流消耗时延迟填充。

这强烈建议您可以在任意大小的文件上使用它,假设您的代码没有将所有内容保存在内存中。