在Java 8中,我看到在Files类中添加了名为lines()的新方法,可用于在Java中逐行读取文件。它适用于大文件吗?我的意思是我们可以加载前1000行然后第二组1000行。我有1GB的巨大文件,它会起作用吗?
有人可以共享代码段如何使用它吗?
答案 0 :(得分:10)
它适用于大文件吗? [...]我有1GB的巨大文件,是吗? 工作?
据我所知,它也适用于大文件(但我还没试过):
try(Stream<String> lines = Files.lines(path)){
lines.filter(...).map(...)....foreach(...);
}
我的意思是我们可以加载前1000行然后第二组1000行。
一次读取多少行是Files.lines特有的实现(可能使用BufferedReader,但我可能错了)。
答案 1 :(得分:0)
来自API(由我鼓舞)
从文件中读取所有行作为流。与readAllLines不同,此方法不会将所有行读入List,而是在流消耗时延迟填充。
这强烈建议您可以在任意大小的文件上使用它,假设您的代码没有将所有内容保存在内存中。