我需要阅读大文件的内容。为此,我用Google搜索并找到了很多方法和资源。但我仍然感到困惑的是读取大文件的方法(在我的情况下需要考虑的因素是内存分配,性能,大文件)
FileChannel
Files.readAllLines
BufferedReader
有人能指导吗?
答案 0 :(得分:2)
您最好的选择是懒惰地阅读文件。一次获取一行并处理每一行。
实施例: -
Stream<String> lines = Files.lines(Paths.get("C:/files", "yourfile.txt"));
然后处理后面的行。
来自official文档: -
public static Stream<String> lines(Path path, Charset cs) throws IOException
从文件中读取所有行作为流。与readAllLines不同,这个 method不会将所有行读入List,而是填充 懒惰地消耗了流。