01-题目
请编写一个字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。
02-思路
- 通过file读取文件路径。
- 判断该file是否存在,不存在抛出异常。
- 根据FileReader读取文件。
- 编写一个字符输入流的包装类。
03-代码
package com.eleven;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.Reader;
/**
* 请编写一个字符输入流的包装类,通过这个包装类对底层字符输入流进行包装,
* 让程序通过这个包装类读取某个文本文件(例如,一个java源文件)时,能够在读取的每行前面都加上有行号和冒号。
* 思路:
* 1.通过file读取文件路径。
* 2.判断该file是否存在,不存在抛出异常。
* 3.根据FileReader读取文件。
* 4.编写一个字符输入流的包装类。
*
* @author sywangu
*
*/
public class SixDemo {
public static void main(String[] args) {
File file = new File("C:\\Users\\sywangu\\Desktop\\aa.txt");
if (file.exists()) {
FileReader fr;
try {
fr = new FileReader(file);
BufferUnit br = new BufferUnit(fr);
String str = "";
while ((str = br.readLine())!=null) {
System.out.println(str);
}
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 字符输入流的包装类
* @author sywangu
*
*/
class BufferUnit extends BufferedReader{
private int row;
public BufferUnit(Reader in) {
super(in);
this.row = 1;
}
public String readLine() throws IOException {
String s = super.readLine();
if (s != null) {
s = this.row + ":" +s;
this.row++;
}
return s;
}
}
04-输出