Java IO详解(五)------包装流

本文详细介绍了Java IO中的包装流,包括其隐藏节点流差异、提供便捷操作的功能,以及缓冲流、转换流、内存流和合并流的使用。缓冲流通过内部数组提升读写速度,转换流用于在字节流和字符流之间转换,内存流存储数据于内存,而合并流可将多个输入流整合为一个流进行读取。
摘要由CSDN通过智能技术生成

File 类的介绍:http://www.cnblogs.com/ysocean/p/6851878.html

Java IO 流的分类介绍:http://www.cnblogs.com/ysocean/p/6854098.html

Java IO 字节输入输出流:http://www.cnblogs.com/ysocean/p/6854541.html

Java IO 字符输入输出流:https://i.cnblogs.com/EditPosts.aspx?postid=6859242

 

  我们在 Java IO 流的分类介绍  这篇博客中介绍知道:

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

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

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

 

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

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

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

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

 

 

 

2、缓冲流

  

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

  字节缓冲流:BufferedInputStream、BufferedOutputStream

  字符缓冲流:BufferedReader、BufferedWriter

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

      

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

//1、创建目标对象,输入流表示那个文件的数据保存到程序中。不写盘符,默认该文件是在该项目的根目录下

            //a.txt 保存的文件内容为:AAaBCDEF

        File target = new File("io"+File.separator+"a.txt");

        //2、创建输入流对象

        InputStream in = new FileInputStream(target);

        //3、具体的 IO 操作(读取 a.txt 文件中的数据到程序中)

            /**

             * 注意:读取文件中的数据,读到最后没有数据时,返回-1

             *  int read():读取一个字节,返回读取的字节

             *  int read(byte[] b):读取多个字节,并保存到数组 b 中,从数组 b 的索引为 0 的位置开始存储,返回读取了几个字节

             *  int read(byte[] b,int off,int len):读取多个字节,并存储到数组 b 中,从数组b 的索引为 0 的位置开始,长度为len个字节

             */

        //int read():读取一个字节,返回读取的字节

        int data1 = in.read();//获取 a.txt 文件中的数据的第一个字节

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值