在 Java 中从文本文件中读取特定行

2022-09-02 03:59:07

有没有办法从文本文件中读取特定行?在API或Apache Commons中。像这样:

String readLine(File file, int lineNumber)

我同意实现起来微不足道,但是如果文件非常大,它就不是很有效。


答案 1
String line = FileUtils.readLines(file).get(lineNumber);

会这样做,但它仍然有效率问题。

或者,您可以使用:

 LineIterator it = IOUtils.lineIterator(
       new BufferedReader(new FileReader("file.txt")));
 for (int lineNumber = 0; it.hasNext(); lineNumber++) {
    String line = (String) it.next();
    if (lineNumber == expectedLineNumber) {
        return line;
    }
 }

由于缓冲区,这将稍微更有效。

看看 Scanner.skip(..) 并尝试跳过整行(使用正则表达式)。我不知道它是否会更有效率 - 基准测试它。

P.S. 与效率我的意思是内存效率


答案 2

我不知道。

请注意,关于行的起始位置,文件上没有特定的索引,因此任何实用程序方法都与以下方法一样有效:

BufferedReader r = new BufferedReader(new FileReader(file));
for (int i = 0; i < lineNumber - 1; i++)
{
   r.readLine();
}
return r.readLine();

(当然,使用适当的错误处理和资源关闭逻辑)。


推荐