本帖最后由 黑马-王言龙 于 2012-8-2 13:11 编辑
来看看StringBuilder的底层实现
public String toString() {
return new String(value, 0, count);
}
StringBuilder sb = new StringBuilder();每读一行,都会创建一个新的sb指向对象。
sb.toStirng() 得到的是一个String类型的对象。要使对象为null,则只有一种可能性,即该对象不存在。
所以sb.toString() != null这个逻辑表达式,永为true;
if (sb.toString() != null)
return sb.toString();//程序运行,读完文本后,将一直返回空内容的String对象
下面是我调用你的MyReader写的测试代码:
public static void main(String[] args) throws Exception {
MyReader mr = new MyReader(new FileReader("G:\\Demo.java"));
PrintWriter pw = new PrintWriter(System.out, true);
String line = null;
while((line=mr.ReadLine()) != null) { //这里读文本中的每一行;当执行到文件结尾后,line指向的将一直是内存中的没有内容的String对象,即line不会指向null。 所以while循环会不停的执行。
pw.println(line);
}
mr.close();
pw.close();
}
|