我有一个BufferedReader循环遍历文件。当我遇到一个特定的案例时,我想继续使用不同的阅读器实例进行循环,但从这一点开始。
推荐解决方案的任何想法?创建一个单独的阅读器,使用标记功能等?
答案 0 :(得分:2)
在等待你对我的评论的回答时,我坚持做出假设。
如果它是你重视的线性输入,你可能会像我一样惊喜地发现RandomAccessFile
现在(自1.4或1.5)支持readLine
方法。当然,RandomAccessFile可以对位置进行细粒度控制。
如果您想要缓冲IO,您可以考虑将阅读器包裹在使用CharacterBuffer
API映射的文件周围的ByteBuffer
或nio
周围。这使您能够将文件视为内存,并精确控制读指针。由于数据全部都在内存中,因此免费提供缓冲。
答案 1 :(得分:1)
您是否查看了BufferedReader
的{{3}}方法?与mark
结合使用可能会满足您的需求。
答案 2 :(得分:0)
如果您跟踪到目前为止已阅读的字符数,可以创建一个新的BufferedReader并使用skip。
正如Noel指出的那样,您需要避免使用BufferedReader.readLine()
,因为readLine()
会丢弃换行符并使您的字符数不准确。如果其他人不得不维护您的代码,您可能不应指望readLine()永远不会被调用。
如果您决定使用skip
,您应该编写自己的缓冲读卡器,它会为您提供计算换行符的偏移量。