IO流

原文链接

装饰者模式

装饰者模式动态地将责任附加到对象上。若要扩展功能,装饰者提供了比继承更有弹性的替代方案。

1.将被装饰者(Concrete Component)当做类中一个成员变量。
2.利用构造将被装饰者注入

为什么需要IO流?

当我们在网上下载一个大文件的时候,由于带宽和内存的限制,我们不可能一次性把它下载下来,这个时候我们会用到流,在内存划分一个缓冲区,一点一点慢慢下载,缓存区满了就写到磁盘上。

IO流的分类

按方向分:输入流、输出流
按传输单位分:字节流(8位)、字符流(16位)
按处理方式分:节点流、处理流

  • 节点流:直接连接数据源的流,可以直接向数据源读写数据
  • 处理流:通过构造函数传入一个节点流,通过装饰者模式对节点流进行处理,使其获得更强大的功能,处理流必须依赖节点流完成,因为只有节点流才能将数据流输入输出到IO设备中。
    IO流四大基类
    常见流

这里只讲文件流,FileInputStream用于读取二进制文件,如图片、视频;FIleReader用于读取字符文件,如txt文本文件(一个完整的字符才有意义)。
处理流
Buffering缓冲流:在读入或写出时,对数据进行缓存,以减少I/O的次数:BufferedReader与BufferedWriter、BufferedInputStream与BufferedOutputStream。

		//1. 创建流
        InputStream in = new FileInputStream(src);
        OutputStream os = new FileOutputStream(dest);
        InputStream in = new BufferedInputStream(new FileInputStream(src));
        OutputStream os = new BufferedOutputStream(new FileOutputStream(dest));

        Reader reader = new InputStreamReader(new FileInputStream(src));
        Writer writer = new OutputStreamWriter(new FileOutputStream(dest));
		Reader reader = new FileReader(src);
        Writer writer = new FileWriter(dest);
        Reader reader = new BufferedReader(new FileReader(src));
        Writer writer = new BufferedWriter(new FileWriter(dest));

装饰者和静态代理模式有点类似,都是从构造函数中传入对象,并增强对象的功能;但是装饰者模式不是简单的增加个增强方法就行,而是要对传入的流对象进行处理才能使其获得缓冲区的功能(具体参考BufferedInputStream的fill()方法)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值