package question9;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
/*
* 自定義字符輸入流的包裝類,通過這個包裝類對底層字符輸入流進行包裝,
* 讓程序通過這個包裝類讀取某個文本文件(例如,一個java源文件)時,
* 能夠在讀取的每行前面都加上有行號和冒號。
*/
public class JavaSoucreFileReader extends BufferedReader
{
public static void main(String[] args) throws Exception
{
//此java源文件的相對路徑
String path = System.getProperty("user.dir")+File.separator+"src"+File.separator+"question9"
+File.separator+"JavaSoucreFileReader.java";
//創建一個包裝流的實例
JavaSoucreFileReader jsfr = new JavaSoucreFileReader(new InputStreamReader(new FileInputStream(new File(path))));
//讀取本文件,並在控制檯打印
String line;
while((line = jsfr.readLine()) != null)
{
System.out.println(line);
}
//47行有效行,應該沒什麼問題
}
public JavaSoucreFileReader(InputStreamReader in)
{
super(in);
}
//用來標記行號的變量
private int line_num = 1;
@Override
public String readLine() throws IOException
{
//returnValue用來區分返回的是否是null
//如果是null表示已達末尾
String returnValue = super.readLine();
//如果不是null則爲當前行加上行號
if(returnValue != null)
returnValue = (line_num++) + ": " + returnValue;
return returnValue;
}
}
讀取文本文件,併爲每一行增加行號
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.