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;
}
}
读取文本文件,并为每一行增加行号
最新推荐文章于 2023-12-09 22:20:44 发布