这个问题在这里已有答案:
python中的文件对象有一个名为seek
的方法,允许您将文件书签放在文件中的任何位置。特别是seek(0)
将文件书签放回文件的开头。
可以对Java中的BufferedReader进行类似的操作,还是只需要创建一个新的?
你不能在BufferedReader
上这样做,因为他只能返回指定数量的字节(实际上是他的缓冲区大小)。
你可以做什么:
FileInputStream fileinputStream = ...;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(fileinputStream));
// reset to the beginning of file and overwrite old buffered reader
fileinputStream.getChannel().position(0);
bufferedReader = new BufferedReader(new InputStreamReader(fileinputStream));
这里有一些关于我和FileChannel
一起使用的fileinputStream.getChannel():
的文档
https://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html
所以对你的问题:是的,你需要创建一个新的
总之,没有。你所能做的就是创造一个新的。仅当文件小于缓冲区大小时,标记/重置才有效。这当然是不可接受的。