Java 使用Util方法逐行获取#

Java 使用Util方法逐行获取#,java,apache-commons-io,Java,Apache Commons Io,是否有任何Util方法可以从给定文件中按行获取行内容?最简单的方法是将所有行读入一个列表,然后在此列表中按编号查找行。你可以用 List<String> lines = FileUtils.readLines(file); List lines=FileUtils.readLines(文件); 我的文件是3GB,我不想在java内存中存储所有行 我会确保你有足够的记忆力。您可以用不到200美元的价格购买32GB 但是,假设这不是一个选项,您可以通过在另一个文件中存储每行的偏移量来

是否有任何Util方法可以从给定文件中按行获取行内容?

最简单的方法是将所有行读入一个列表,然后在此列表中按编号查找行。你可以用

List<String> lines = FileUtils.readLines(file);
List lines=FileUtils.readLines(文件);
我的文件是3GB,我不想在java内存中存储所有行

我会确保你有足够的记忆力。您可以用不到200美元的价格购买32GB

但是,假设这不是一个选项,您可以通过在另一个文件中存储每行的偏移量来读取一次文件,从而为该文件编制索引。它可以是32位偏移量,但如果使用64位偏移量,它会更简单/更具可扩展性

然后可以查找每行和下一行的偏移量,以确定读取每行的位置。如果能有效实施,我预计这将需要大约10微秒的时间


顺便说一句:如果你把它加载到Java内存中,速度会快100倍。

谢谢你的回复。我的文件是3GB,我不想在java内存中存储所有行。我尝试使用ApacheCommonsIO中的LineIterator,但它没有前面的方法,因此没有帮助。