4.0、Java_IO流 - 流的概念细分

4.0、Java_IO流 - 流的概念细分

按照流的方向分类:

        输入流:数据流从数据源到程序(以 InputStream 、Reader 结尾的流);

        输出流:数据流从程序到目的地(以 OutputStream 、Writer 结尾的流);

按处理的数据单元分类:

        字节流:一字节为单位获取数据,命名上以 Stream 结尾的流一般是字节流,如FileInputStream 、FileOutputStream;

        字符流:以字符为单位获取数据,命名上以 Reader / Writer 结尾的流一般是字符流,如 FileReader 、FileWriter;

那如何判断 - 什么时候用字节流什么时候用字符流呢?

        假设我们现在需要读取一个外部二进制文件(比如:图片、音影等),那么由于文件本身就是一个二进制的文件,理所应当使用 字节流 读取文件内容;

        假设我们读取的文件里放的是一些文本性的内容,我们要将该文件基于文本内容的形式读取进来,那么就需要用到字符流了;

按照处理对象不同分类:

        节点流:可以直接从 数据源 ( 源设备 / 目标设备 ) 读写数据,如 FileInputStream 、FileReader 、DataInputStream 等 [ 这里稍作解释:我们可以将流想象成管道,Java-IO流为我们提供了很多不同类型的管道,管道与管道之间也是可以嵌套的,但是不管你如何嵌套 -> 最后也必须有一个管道是直接连接着 数据源 的,那么可以直接连接 数据源 的管道就被称为 - 节点流 ]

        处理流(包装流):不直接连接 数据源 的管道是 " 处理流 ";通过对其他流的处理提高程序的性能,如 BufferedInputStream 、BufferedReader 等;

如下图所示 ->

         节点流 处于 IO 操作的第一线,所有操作必须通过他们进行(这是当然,因为他们肯定连接着数据源);处理流(包装流)可以对节点流进行包装,提高性能或提高程序的灵活性;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值