在 Java 中从文本文件中读取特定行
2022-09-02 03:59:07
有没有办法从文本文件中读取特定行?在API或Apache Commons中。像这样:
String readLine(File file, int lineNumber)
我同意实现起来微不足道,但是如果文件非常大,它就不是很有效。
有没有办法从文本文件中读取特定行?在API或Apache Commons中。像这样:
String readLine(File file, int lineNumber)
我同意实现起来微不足道,但是如果文件非常大,它就不是很有效。
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. 与效率我的意思是内存效率
我不知道。
请注意,关于行的起始位置,文件上没有特定的索引,因此任何实用程序方法都与以下方法一样有效:
BufferedReader r = new BufferedReader(new FileReader(file));
for (int i = 0; i < lineNumber - 1; i++)
{
r.readLine();
}
return r.readLine();
(当然,使用适当的错误处理和资源关闭逻辑)。