【发布时间】:2012-06-03 12:00:17
【问题描述】:
iam 使用 BufferedReader 从文件中读取行。当我从文件中读取所有行时,我想从头开始重新读取文件,我该怎么做? BufferedReader.mark() 和 BufferedReader.reset() 无法正常工作。这是我的代码
FileReader fR = new FileReader(this.sTargetPath);
final BufferedReader vcfBuffer = new BufferedReader(fR);
// vcfBuffer.mark(0);
Boolean nextLine = true;
while (nextLine) {
try {
String line = vcfBuffer.readLine();
}
} catch (IOException e) {
nextLine = false;
}
}
}
vcfBuffer.reset();
如何重置 BufferedREader 位置?感谢您的帮助
【问题讨论】:
-
再次创建一个新的缓冲读取器对象。或者使用
RandomAccesFileseek(0)方法。 -
除了创建另一个阅读器之外别无他法?我不认为这是个好主意,它有效但效率不高,对吧?
-
我认为您可以在阅读第一行之前创建一个标记,然后您可以稍后使用 reset() 方法返回该点,不过我之前没有尝试过。
-
如果您读取的内容超出内部缓冲区的容量,则
BufferedReader的“标记”无效。将文件的内容读取并存储为char[]数组并使用CharArrayReader而不是FileReader作为BufferedReader的输入 - 或增加缓冲区的大小。 -
使用 BufferedReader 总是很快,但占用的内存很少。只要它有效,它就可以。我不知道如何设置启动 InputStream。
标签: java android bufferedreader