讀取文本文件,併爲每一行增加行號

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;
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章