62,628
社区成员
发帖
与我相关
我的任务
分享import java.io.*;
import java.util.*;
public class Exercise1 {
public static void main(String[] args)
{
try
{
BufferedReader in=new BufferedReader(new FileReader("data1.txt"));
String s=new String();
String s1=new String();
Vector test=new Vector();
int size=0;
while((s=in.readLine())!=null)
test.addElement(s);
//-----------------------
/*size=test.size();
for(int i=size-1;i>=0;i--)
System.out.println(test.elementAt(i));*/
//------------------------------------------------------
size=test.size();
for(int i=0;i<size;i++)
s1=s1+(String)test.elementAt(i)+"\n";
LineNumberReader li=new LineNumberReader(new StringReader(s1));
BufferedReader in1=new BufferedReader(li);
//PrintWriter out1=new PrintWriter(new BufferedWriter(new FileWriter("data3.txt")));
while((s=in1.readLine())!=null)
System.out.println("Line"+li.getLineNumber()+": "+s);
in1.close();
}catch(Exception e)
{
e.printStackTrace();
}
}
}
没看过thinking in java ,不过跟前有一本,楼主仿的哪个章节的例子呢,我看看去,我这里的是第四版的。[/quote]
Thinking in java 中文第四版 10.7.4 小节 NewIODemo.java这个例子 你看下?是不是我的理解有问题。[/quote]
没看过第四版,TIJ是十几年前看的了,当时就觉得翻译+原著都有点问题 String text = "a\r\nb\r\nc\r\n";
LineNumberReader r = new LineNumberReader(new BufferedReader(new StringReader(text)));
String tmp = null;
while ((tmp = r.readLine()) != null)
System.out.println("Line" + r.getLineNumber() + ": " + tmp);
r.close();
lz应该用LineNumberReader 来包装BufferedReader而不是反过来。
BufferedReader 的缓冲区默认是8192 lz的文本内容应该还没这么多,用BufferedReader包装LineNumberReader 的话直接就给缓冲完了,所以行号一直是5。
我看的thinking in java 第十章只到10.7.2 是嵌套类的从多层嵌套类访问外部类的成员 木有10.7.4节。6楼大牛已经确认我们的理解是对的,这个就可以先过了,哈哈。
while((s=in1.readLine())!=null) {
System.out.println("Line "+li.getLineNumber()+": "+s);
}
in1.readLine() 时,in1需要按照一行一行来输出自己的内容,但输出之前in1必须将li的内容全部读完,所以li的lineNumber就到了第5行了。
没看过thinking in java ,不过跟前有一本,楼主仿的哪个章节的例子呢,我看看去,我这里的是第四版的。[/quote]
Thinking in java 中文第四版 10.7.4 小节 NewIODemo.java这个例子 你看下?是不是我的理解有问题。
没看过thinking in java ,不过跟前有一本,楼主仿的哪个章节的例子呢,我看看去,我这里的是第四版的。