Nullii 2016-03-27 17:13 采纳率: 33.3%
浏览 1754
已结题

IO流 自定义readLine 无法读取下一行

import java.io.*;
public class Demo
{
public static void main(String[] args) throws IOException
{
BufferedWriter bfw = new BufferedWriter(new FileWriter("b.txt"));
bfw.write("sdasdaad\r\n");

    bfw.write("1");
    bfw.close();

    myreadline bfr = new myreadline(new FileReader("b.txt"));
    String s = null;
    while((s = bfr.method()) != null)
    {
        sop(s);
    }
    bfr.myclose();

}

public static void sop(Object obj)
{
    System.out.println(obj);
}

}

class myreadline extends Reader
{
private FileReader r ;
myreadline(FileReader r)
{
this.r = r;
}

public String method() throws IOException
{
    StringBuilder sb = new StringBuilder();

    int ch =0;
    while((ch = r.read()) != -1)
    {
        if( ch == '\r')
            continue;
        if(ch == '\n')
            return sb.toString();
        else
            sb.append((char)ch);
    }
    return null;
}

public void myclose()throws IOException
{
    r.close();
}

public void close()throws IOException
{
    r.close();
}

public int read(char[] c , int a , int b) throws IOException
{
    return r.read(c, a , b);
}

}

为什么只能读取一行呢???

  • 写回答

1条回答

  • threenewbee 2016-03-27 22:12
    关注

    StringBuilder sb = new StringBuilder();
    这个sb放在局部变量里,每次调用都不会再有之前读取的缓冲的字符了。

    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)