【问题标题】:rewinding a Java BufferedReader to the beginning of a file [duplicate]将Java BufferedReader倒回到文件的开头[重复]
【发布时间】:2019-09-07 17:41:35
【问题描述】:

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

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

【问题讨论】:

    标签: java bufferedreader


    【解决方案1】:

    您不能在 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));
    

    这里有一些关于FileChannelfileinputStream.getChannel(): 一起使用的文档

    https://docs.oracle.com/javase/7/docs/api/java/nio/channels/FileChannel.html

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-05-07
      • 1970-01-01
      • 1970-01-01
      • 2012-05-27
      • 1970-01-01
      • 2016-01-24
      • 2013-12-23
      • 1970-01-01
      • 2016-07-12
      相关资源
      最近更新 更多