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-輸出