Java制作一个阅读器的副本

Java制作一个阅读器的副本,java,streamreader,datareader,Java,Streamreader,Datareader,我有一个BufferedReader在文件中循环。当我遇到一个特定的案例时,我想继续使用不同的reader实例进行循环,但从这一点开始 有什么建议的解决方案吗?创建一个单独的读卡器,使用标记功能等?您有没有看过BufferedReader的方法?与它结合使用可能会满足您的需要。在等待您对我的评论的回答时,我一直在做假设 如果是行输入值,您可能会和我一样惊喜地发现RandomAccessFile现在(从1.4或1.5版开始)支持readLine方法。当然,RandomAccessFile为您提供了

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


有什么建议的解决方案吗?创建一个单独的读卡器,使用标记功能等?

您有没有看过
BufferedReader
的方法?与它结合使用可能会满足您的需要。

在等待您对我的评论的回答时,我一直在做假设

如果是行输入值,您可能会和我一样惊喜地发现
RandomAccessFile
现在(从1.4或1.5版开始)支持
readLine
方法。当然,RandomAccessFile为您提供了对位置的细粒度控制


如果您想要缓冲的IO,您可以考虑将读者包装在<代码> CharacterBuffer < /代码>,或者可能是“<代码> ByteBuffer <代码> >使用一个文件,该文件使用<代码> NIO API映射。这使您能够将文件视为内存,并对读取指针进行精细控制。因为数据都在内存中,所以缓冲是免费的。

如果您记录到目前为止读取的字符数,您可以创建一个新的BufferedReader并使用它

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


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

标记很难使用,因为我不知道传入缓冲区的大小(或通过缓冲区的距离),为什么要使用BufferedReader?是为了性能还是为了使用readLine()方法?(我的意思是与普通文件读取器相反)是的,就是这样,如果避免使用BufferedReader.readLine()丢弃换行符数据,或者换行符的使用是标准化的,则
RandomAccessFile
:)是可行的。