Java制作一个读者的副本

时间:2009-11-18 21:28:54

标签: java streamreader datareader

我有一个BufferedReader循环遍历文件。当我遇到一个特定的案例时,我想继续使用不同的阅读器实例进行循环,但从这一点开始。

推荐解决方案的任何想法?创建一个单独的阅读器,使用标记功能等?

3 个答案:

答案 0 :(得分:2)

在等待你对我的评论的回答时,我坚持做出假设。

如果它是你重视的线性输入,你可能会像我一样惊喜地发现RandomAccessFile现在(自1.4或1.5)支持readLine方法。当然,RandomAccessFile可以对位置进行细粒度控制。

如果您想要缓冲IO,您可以考虑将阅读器包裹在使用CharacterBuffer API映射的文件周围的ByteBuffernio周围。这使您能够将文件视为内存,并精确控制读指针。由于数据全部都在内存中,因此免费提供缓冲。

答案 1 :(得分:1)

您是否查看了BufferedReader的{​​{3}}方法?与mark结合使用可能会满足您的需求。

答案 2 :(得分:0)

如果您跟踪到目前为止已阅读的字符数,可以创建一个新的BufferedReader并使用skip

正如Noel指出的那样,您需要避免使用BufferedReader.readLine(),因为readLine()会丢弃换行符并使您的字符数不准确。如果其他人不得不维护您的代码,您可能不应指望readLine()永远不会被调用。

如果您决定使用skip,您应该编写自己的缓冲读卡器,它会为您提供计算换行符的偏移量。