0

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

4

1 回答 1

2

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

List<String> lines = FileUtils.readLines(file);

我的文件是 3GB,我不想将所有行都存储在我的 java 内存中

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

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

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

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

于 2013-01-16T21:31:29.140 回答