java - 逐行获取Util方法#

标签 java apache-commons-io

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

最佳答案

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

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

My file is 3GB and I don't want to store all the lines in my java memory

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

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

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

顺便说一句:如果将其加载到 Java 内存中,速度大约会快 100 倍。

关于java - 逐行获取Util方法#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14368111/

相关文章:

Java Arraylist.Using Generics and Wildcards 创建一个可重用的方法

java - ArrayList 无法正确读入

java - 将长时间运行的服务集成到 Spring boot 框架中

java - 在 Java 字符串中查找标记

java - ö CSV 文件创建中的字符编码问题

java - 存储主机名和端口的最佳方式是什么?

java - Apache FileUtils.copyDirectory(...) 的进度条

java - Eclipse 插件项目中的库

java - 尝试将文件从一个位置复制到另一个位置

java - 使用 commons-io 的 IOUtils.toString(input) 后是否需要手动关闭输入流?