读取文件行的标准方式是在内存中读取,Guava 和Apache Commons IO都提供了如下所示快速读取文件行的方法:
Files.readLines(new File(path), Charsets.UTF_8);
FileUtils.readLines(new File(path));
这种方式开始时只占用很少的内存,当文件全部读到内存中后,文件的所有行都被存储在内存中。
我们通常不需要把文件的所有行一次性地放入内存中——相反,我们只需要遍历文件的每一行,然后做相应的处理,处理完之后把它扔掉。所以,这正是我们将要做的——通过行迭代,而不是把所有行都放在内存中。
一,
使用java.util.Scanner类扫描文件的内容,一行一行连续地读取。
二,
同样也可以使用Commons IO库实现,利用该库提供的自定义LineIterator。