菜鸟疑问:有关于Thinkinjava(1st,chap10)的一个例子:readLine&getLineNumber

zhujjcn 2003-06-19 10:24:24
Think in java(1st Edition) chap10
//String S2是读文件出来的
//: IOStreamDemo.java
try {
LineNumberInputStream li =
new LineNumberInputStream(
new StringBufferInputStream(s2));
DataInputStream in4 =
new DataInputStream(li);
PrintStream out1 =
new PrintStream(
new BufferedOutputStream(
new FileOutputStream(
"IODemo.out")));
while((s = in4.readLine()) != null )
out1.println(
"Line " + li.getLineNumber() + s);
out1.close(); // finalize() not reliable!
} catch(EOFException e) {
System.out.println(
"End of stream encountered");
}
//: NewIODemo.java
try {
LineNumberReader li =
new LineNumberReader(
new StringReader(s2));
BufferedReader in4 =
new BufferedReader(li);
PrintWriter out1 =
new PrintWriter(
new BufferedWriter(
new FileWriter("IODemo.out")));
/*
while((s = li.readLine()) != null)
out1.println("Line"+li.getLineNumber());
*/
while((s = in4.readLine()) != null )
out1.println(
"Line " + li.getLineNumber() + s);
out1.close();
} catch(EOFException e) {
System.out.println("End of stream");
}
Question:
为什么再NewIODemo.java里只要一被in4.readLine(),li.getLineNumber()就会到最后的行号(取出来全是相等的,最大行数),而用li.readLine()则不会如此,在IOStreamDemo.java里也不会如此。难道1.1以上in4.readLine()一个动作发生时实际上li已经被读完了缓冲???
...全文
33 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhujjcn 2003-09-16
  • 打赏
  • 举报
回复
继续ding
zhujjcn 2003-06-23
  • 打赏
  • 举报
回复
Ding……

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧