将Java BufferedReader倒带到文件的开头

时间:2019-04-17 13:02:01

标签: java bufferedreader

python中的文件对象具有一种称为seek的方法,该方法使您可以将文件书签放置在文件中的任何位置。特别是seek(0)将文件书签放回文件的开头。

是否可以对Java中的BufferedReader做类似的事情,还是只需要制作一个新的东西?

2 个答案:

答案 0 :(得分:2)

您无法在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

关于您的问题:是的,您需要创建一个新的

答案 1 :(得分:2)

总之,不。您所能做的就是制作一个新的。仅当文件小于缓冲区大小时,标记/重置才有效。当然,这是不可接受的。