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

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

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

  1. String msg = null;
  2. while((msg = bReader.readLine()) != null)
  3. {
  4. System.out.println(msg);
  5. }
  6. while((msg = bReader.readLine()) != null)
  7. {
  8. System.out.println(msg);
  9. }
  10. }

}
文件的内容只是显示了一次,应该是使用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();
    然后读取到的应该是从**文件的开头到第三行**

    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 llama.cpp项目中为什么超过上下文窗口就报错
  • ¥15 基于stc89c52单片机的延时小夜灯
  • ¥15 VQAV2现在都是怎么做evaluation的啊
  • ¥20 C#添加、更新MYSQL数据库问题
  • ¥15 ambari部署hadoop集群中的问题
  • ¥15 分析照片像素时,怎样剔除照片背景像素
  • ¥15 Cytoscape导入问题
  • ¥15 关于#lstm#的问题:我想利用一个地方的四组数据来预测第五组数据,如果想预测出另外一个地方(只有前四组数据)的第五组数据(相关搜索:预测模型)
  • ¥15 windows窗口外边框分区是什么?(qt应用)
  • ¥15 使用lightgbm框架,对糖尿病趋势进行预测。
手机看
程序员都在用的中文IT技术交流社区

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

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

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

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

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

客服 返回
顶部