是否有任何Util方法可以通过给定文件中的Line#获取行内容?
答案 0 :(得分:2)
最简单的方法是将所有行读入列表,并在此列表中按行号查找。你可以使用
List<String> lines = FileUtils.readLines(file);
我的文件是3GB,我不想在我的java内存中存储所有行
我会确保你有足够的记忆力。您可以以低于200美元的价格购买32 GB。
但是,假设这不是一个选项,您可以通过将文件的每个行的偏移量存储在另一个文件中来读取文件来索引该文件。它可以是32位偏移量,但如果使用64位偏移量,它会更简单/更具可伸缩性。
然后,您可以查找每行的偏移量和下一行的偏移量,以确定每行的读取位置。如果有效实施,我预计这将花费大约10微秒。
顺便说一句:如果你把它加载到Java内存中,它将快大约100倍。