System.out.print(lin.getLineNumber()+";;"+new String(arr,0,s));//为什么带着行号打印却没有行号呢?为什么啊
你是想通过这句话打印出行号和一行语句,但是上面的代码int s= lin.read(arr); 是将数据读取到数组,new String(arr,0,s)是将整个数组中从角标0到s的数据转换成字符串,所以没有行号。
因为LineNumberReader 是BufferedReader的子类,可以用LineNumberReader 的readLine()方法获取一行加上行号
修改代码如下:
- import java.io.*;
- class Demo
- {
- public static void main(String[] args) throws IOException
- {
- FileReader fr = new FileReader("Test.java");
- LineNumberReader lin = new LineNumberReader(fr);
-
- while(true)
- {
- String s= lin.readLine();//用readLine()方法读取一行
- if(s==null)
- break;
- else
- System.out.println(lin.getLineNumber()+";;"+s);//为什么带着行号打印却没有行号呢?为什么啊
-
- }
- lin.close();
- }
- }
复制代码 |