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 等;

如下图所示 ->

4.0、Java_IO流 - 流的概念细分_第1张图片

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

你可能感兴趣的:(Java_IO流学习总结,Java_IO流,节点流,处理流(包装流),输入流输出流,字节流字符流)