Llu*_*nez 21 java apache-commons-io
有没有方法从文本文件中读取特定的行?在API或Apache Commons中.就像是 :
String readLine(File file, int lineNumber)
Run Code Online (Sandbox Code Playgroud)
我同意它的实现是微不足道的,但如果文件非常大,它的效率并不高.
Boz*_*zho 17
String line = FileUtils.readLines(file).get(lineNumber);
Run Code Online (Sandbox Code Playgroud)
会这样做,但它仍然存在效率问题.
或者,您可以使用:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
由于缓冲区,这将稍微更有效.
看看Scanner.skip(..)并尝试跳过整行(使用正则表达式).我不知道它是否会更有效 - 基准它.
PS有效率我的意思是内存效率
不是我知道的.
请注意,对于行开始的位置,文件没有特定的索引,因此任何实用程序方法都可以完全有效:
BufferedReader r = new BufferedReader(new FileReader(file));
for (int i = 0; i < lineNumber - 1; i++)
{
r.readLine();
}
return r.readLine();
Run Code Online (Sandbox Code Playgroud)
(当然,有适当的错误处理和资源关闭逻辑).
| 归档时间: |
|
| 查看次数: |
29365 次 |
| 最近记录: |