将Java BufferedReader倒回到文件的开头[重复]

问题描述 投票:1回答:2

这个问题在这里已有答案:

python中的文件对象有一个名为seek的方法,允许您将文件书签放在文件中的任何位置。特别是seek(0)将文件书签放回文件的开头。

可以对Java中的BufferedReader进行类似的操作,还是只需要创建一个新的?

java bufferedreader
2个回答
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

所以对你的问题:是的,你需要创建一个新的


2
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.