u010317193 2015-04-22 05:22 采纳率: 0%
浏览 14017

BufferedReader读取文件以后,怎么将文件指针移到文件开头

代码附上:
public class BufferedTest {
public static void main(String[] args) throws IOException
{
BufferedReader bReader = new BufferedReader(
new InputStreamReader(new FileInputStream("countBrowser/part-r-00000")));

    String msg = null;
    while((msg = bReader.readLine()) != null)
    {
        System.out.println(msg);
    }


    while((msg = bReader.readLine()) != null)
    {
        System.out.println(msg);
    }
}

}
文件的内容只是显示了一次,应该是使用bReader读完以后,文件指针移到了文件的末尾,再读取就读取不出来了,但是怎么移到文件的开头呢?求教大家了

  • 写回答

4条回答 默认 最新

  • 毕小宝 博客专家认证 2015-04-22 19:01
    关注

    用mark和reset的话,也可以重新回到文件首部。mark是在当前位置标记一下,然后reset回到最后一次标记的位置。那么缓存区的内容就可以重复使用了。
    示例代码:

     try {
                File file = new File("D:/Test.java");
                BufferedReader reader = new BufferedReader(new FileReader(file));
                String content=reader.readLine();
                reader.mark((int)file.length());
                while(content!=null){
                    System.out.println(content);
                    content=reader.readLine();
                }
    
                reader.reset();
                content=reader.readLine();
                while(content!=null){
                    System.out.println(content);
                    content=reader.readLine();
                }
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
    
    评论
  • 毕小宝 博客专家认证 2015-04-22 16:49
    关注

    让bReader重新执行文件。就是再执行一遍。

     bReader = new BufferedReader(
    new InputStreamReader(new FileInputStream("countBrowser/part-r-00000")));
    
    评论
  • boker 2015-06-25 23:29
    关注

    reader.mark((int)file.length()); 这个参数有限制,还是用文件长度保险些。。。

    评论
  • csy0832 2016-02-02 19:48
    关注

    reader.mark((int)file.length()); 这个参数有限制,还是用文件长度保险些。。。
    mark()的这个参数,我猜应该是这样的吧,例如:
    file总共有10行,然后mark(3);
    再reset();
    然后读取到的应该是从**文件的开头到第三行**

    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部