有点长。。[Java] 纯文本查看 复制代码 import java.io.*;
//带行号的缓冲输入字符流
class BufferedLineNum  extends BufferedReader{	
	//在内部维护一个被装饰类的引用。
	BufferedReader bufferedReader;
	//定义行号
	int count = 1;
	//构造函数
	public BufferedLineNum(BufferedReader bufferedReader){
		super(bufferedReader);// 注意: 该语句没有任何的作用,只不过是为了让代码不报错。
		this.bufferedReader = bufferedReader;
	}	
	//重写BufferedReader的readLine方法实现行号功能
	public String readLine() throws IOException{
		String line = bufferedReader.readLine();
		if(line==null){
			return null;
		}
		line = count+" "+line;
		count++;
		return line;
	}
} 
//带分号缓冲输入字符流
class BufferedSemi extends BufferedReader{ 
	//在内部维护一个被装饰类的引用。
	BufferedReader bufferedReader;		
	//构造函数
	public BufferedSemi(BufferedReader bufferedReader){
		super(bufferedReader);// 注意: 该语句没有任何的作用,只不过是为了让代码不报错。
		this.bufferedReader = bufferedReader;
	}
	//重写BufferedReader的readLine方法实现每行加分号功能
	public String readLine() throws IOException{
		String line = bufferedReader.readLine();  //如果这里的ReadLine方法是调用了buffereLineNum的readLine方法,问题马上解决。
		if(line==null){
			return null;
		}
		line = line +";";
		return line;
	}
	
}
//缓冲类带双引号
class BufferedQuto extends BufferedReader{
	
	//在内部维护一个被装饰的类
	BufferedReader bufferedReader;
	//构造方法
	public BufferedQuto(BufferedReader bufferedReader){  //new  BufferedSemi2();
		super(bufferedReader) ; //只是为了让代码不报错..
		this.bufferedReader = bufferedReader;
	}
	//重写BufferedReader的readLine方法实现加双引号功能
	public String readLine() throws IOException{
		String line = bufferedReader.readLine();  //如果这里的ReadLine方法是调用了buffereLineNum的readLine方法,问题马上解决。
		if(line==null){
			return null;
		}
		line = "\""+line +"\"";
		return line;
	}	
}
public class Demo {	
	public static void main(String[] args) throws IOException {
		File file = new File("F:\\Demo1.java");
		FileReader fileReader = new FileReader(file);
		//建立缓冲输入字符流
		BufferedReader bufferedReader = new BufferedReader(fileReader);
		//建立带行号的缓冲输入字符流
		BufferedLineNum bufferedLineNum = new BufferedLineNum(bufferedReader);		
		//带分号的缓冲输入字符流
		BufferedSemi bufferedSemi = new BufferedSemi(bufferedLineNum);		
		//带双引号的缓冲输入字符流
		BufferedQuto bufferedQuto = new  BufferedQuto(bufferedSemi);
		
		String line = null;
		while((line = bufferedQuto.readLine())!=null){
			System.out.println(line);			
		}		
	}	
}
 |