是否有任何Util方法从给定文件中获得行#的内容?
最简单的方法是将所有行读入列表中,并在该列表中按编号查找行。你可以使用
List<String> lines = FileUtils.readLines(file);
我的文件是3GB的,我不想把所有的行都存储在我的java内存
我会确保你有足够的内存。你可以用不到200美元买到32 GB。
但是,假设这不是一个选项,您可以通过一次读取来索引文件,将每行的偏移量存储在另一个文件中。它可以是一个32位偏移量,但如果你使用64位偏移量,它会更简单/更可伸缩。
然后可以查找每行和下一行的偏移量,以确定读取每行的位置。如果有效地实现,我预计这大约需要10微秒。
如果你把它加载到Java内存中,它将会快100倍。