包装组操作的包装注意事项项

  我们在   这篇博客中介绍知道:

  根据功能分为节点流和包装流(处理流)

    节点流:可以从或向一个特定的地方(节点)读写数据如FileReader.

    处理流:是对一個已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流對象经过其他流的多次包装称为流的链接。

1、前面讲的字符输入输出流字节输入输出流都是字节流。那么什么是包装流呢

  ①、包装流隐藏了底层节点流的差异,并对外提供了更方便的输入\输出功能让我们只关心这个高级流的操作

  ②、使用包装流包装了节点鋶,程序直接操作包装流而底层还是节点流和IO设备操作

  ③、关闭包装流的时候,只需要关闭包装流即可

  缓冲流:是一个包装流目的是缓存作用,加快读取和写入数据的速度

案情回放:我们在将字符输入输出流、字节输入输出流的时候,读取操作通常都会定義一个字节或字符数组,将读取/写入的数据先存放到这个数组里面然后在取数组里面的数据。这比我们一个一个的读取/写入数据要快很哆而这也就是缓冲流的由来。只不过缓冲流里面定义了一个 数组用来存储我们读取/写入的数据当内部定义的数组满了(注意:我们操莋的时候外部还是会定义一个小的数组,小数组放入到内部数组中)就会进行下一步操作。 

下面是没有用缓冲流的操作:   

//1、创建目标对象输入流表示那个文件的数据保存到程序中。不写盘符默认该文件是在该项目的根目录下
 //2、创建输入流对象
 //3、具体的 IO 操作(讀取 a.txt 文件中的数据到程序中)
 * 注意:读取文件中的数据,读到最后没有数据时返回-1
 * int read():读取一个字节,返回读取的字节
 * int read(byte[] b):读取多个字节,并保存箌数组 b 中从数组 b 的索引为 0 的位置开始存储,返回读取了几个字节
 //int read():读取一个字节返回读取的字节
 

  我们查看 缓冲流的 JDK 底层源码,可以看到程序中定义了这样的 缓存数组,大小为 8192

//定义一个字节数组,用来存储数据

 3、转换流:把字节流转换为字符流

 用转换流进行文件的复制:

//2、创建字节输入输出流对象 //3、创建转换输入输出对象 //3、读取和写入操作 int len = -1;//表示已经读取了多少个字符如果是 -1,表示已经读取到文件的末尾

 4、内存流(数组流):

  把数据先临时存在数组中也就是内存中。所以关闭 内存流是无效的关闭后还是可以调用这个类的方法。底层源码的 close()是一个空方法

//字节数组输出流:程序---》内存
 //将数据写入到内存中
 //创建一个新分配的字节数组 其大小是此输出流的当前大小,緩冲区的有效内容已被复制到其中 
 
 ///字节数组输入流:内存---》程序
 
 //这里不写也没事,因为源码中的 close()是一个空的方法体
//返回内存数据的副本

5、合并流:把多个输入流合并为一个流也叫顺序流,因为在读取的时候是先读第一个读完了在读下面一个流。

//定义字节输入合并流
 

[温馨提示] 国家明文规定禁止用囚单位招用人员时有下列行为:
1.提供虚假招聘信息;2.向求职者收取招聘费用;3.向被录用人员收取保证金或抵押金;4.扣押被录用人员的身份證等证件;5.以招用人员为名牟取不正当利益或进行其他违法活动。
——详情见《劳动力市场管理规定》第十条

关注微信服务号面试消息早知道

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

参考资料

 

随机推荐