Java当中的IO(三)

转载请注明出处:http://blog.csdn.net/u011569040/article/details/45114403


主要内容:

1.处理流使用实例

2.“装饰者(Decorator)”模式

3.节点流与处理流的关系


先介绍一个处理流-----BufferedReader

Reader和Writer这两个类以及这两个类的子类都属于字符流,所以BufferedReader也属于字符流,其次它是处理流,然后它还是输入流,故全称 字符输入处理流。

我们学习它主要使用它的readLine(),这个方法一次性可以读入一行的数据。



import java.io.*;

class Test{
	public static void main(String args []){
		FileReader fileReader = null;
		BufferedReader bufferedReader = null;
		try{
			fileReader = new FileReader("d:/code/users.txt");
			bufferedReader = new BufferedReader(fileReader);
			String line = null;
			while(true){
				line = bufferedReader.readLine();
				if(line == null){
					break;
				}
				System.out.println(line);
			}
		}
		catch(Exception e){
			System.out.println(e);
		}
		finally{
			try{
				bufferedReader.close();
				fileReader.close();
			}
			catch(Exception e){
				System.out.println(e);
			}
		}
	}
	
}

用到处理流之前必须的有一个节点流(如程序中的 fileReader),因为readLine() 并不是真正从文件里面来读数据,readLine()实际上是使用fileReader对象来读取的,然后把从fileReader中读取的数据进行进一步的处理。

fileReader和BufferedReader之间究竟有怎么样的关系呢?实际上使用的就是装饰者设计模式。


程序如下,以后好好分析:

先写一个工人的接口——Worker

interface Worker{
	public void doSomeWork();
}
再写一个水管工和木匠的类:

class Plumber implements Worker{
	public void doSomeWork(){
		System.out.println("修水管");
	}
}
class Carpenter implements Worker{
	public void doSomeWork(){
		System.out.println("修门窗");
	}
}
现在很多公司都既有水管工又有木匠,每个公司对自己的两类员工的要求都不同

A公司对自己公司的水管工和木匠要求,进门对客户说“你好”,现在写一个AWorker类:

class AWorker implements Worker{
	private Worker worker;
	public AWorker (Worker worker){
		this.worker = worker;
	}
	public void doSomeWork(){
		System.out.println("你好");
		worker.doSomeWork();
	}
}

现在测试Test01.java

class Test01{
	public static void main(String args []){
		//生成一个A公司水管工对象
		Plumber plumber = new Plumber();
		AWorker aWorker1 = new AWorker(plumber);
		aWorker1.doSomeWork();
		
		Carpenter carpenter = new Carpenter();
		AWorker aWorker2 = new AWorker(carpenter);
		aWorker2.doSomeWork();
		
		//AWorker 是修饰者,carpenter、plumber是被装饰者(给他们装饰了 进门说“你好”)
	}
}

结果:





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值