001.流 上卷 概念

作者: 胖先森 | 来源:发表于2017-03-27 12:24 被阅读0次

    1.JAVA流式输入/输出原理

    站在程序的角度思考问题

    流是用来读写数据的,Java有一个类叫File,它封装的是文件的文件名,只是内存里面的一个对象,真正的文件是在硬盘上的一块空间,在这个文件里面存放着各种各样的数据,我们想读文件里面的数据怎么办呢?是通过一个流的方式来读,咱们要想从程序读数据,对于计算机来说,无论读什么类型的数据都是以010101101010这样的形式读取的。怎么把文件里面的数据读出来呢?你可以把文件想象成一个小桶,文件就是一个桶,文件里面的数据就相当于是这个桶里面的水,那么我们怎么从这个桶里面取水呢,也就是怎么从这个文件读取数据呢。

    2.输入输出流分类

    不同流的分类,仔细看看图

    java.io.* 包里面定义了所有的流,所以一说流指的就是IO包里面的

    什么叫输入流?什么叫输出流?用一根管道一端插进文件里程序里面,然后开始读数据,那么这是输入还是输出呢?如果站在文件的角度上,这叫输出,如果站在程序的角度上,这叫输入。

    记住,以后说输入流和输出流都是站在程序的角度上来说。

    3.节点流和处理流

    处理流会提高效率

    你要是对原始的流不满意,你可以在这根管道外面再套其它的管道,套在其它管道之上的流叫处理流。为什么需要处理流呢?这就跟水流里面有杂质,你要过滤它,你可以再套一层管道过滤这些杂质一样。

    3.1 节点流类型

    红色区域,使用还是比较多的

    节点流就是一根管道直接插到数据源上面,直接读数据源里面的数据,或者是直接往数据源里面写入数据。典型的节点流是文件流:

    • 字节流
      • 文件的字节输入流(FileInputStream)
      • 文件的字节输出流(FileOutputStream)
    • 字符流
      • 文件的字符输入流(FileReader)
      • 文件的字符输出流(FileWriter)。

    使用频率还是比较高的,这些都是基石

    3.2 处理流类型

    红色部分还是比较重要的

    处理流是包在别的流上面的流,相当于是包到别的管道上面的管道。

    4.InputStream(输入流)

    输入流关系图

    凡是以InputStream结尾的管道,都是以字节的形式向我们的程序输入数据。

    4.1.InputStream的基本方法

    常用方法
    • read()方法是一个字节一个字节地往外读,每读取一个字节,就处理一个字节。
    • read(byte[] buffer)方法读取数据时,先把读取到的数据填满这个byte[]类型的数组buffer(buffer是内存里面的一块缓冲区),然后再处理数组里面的数据。
      这就跟我们取水一样,先用一个桶去接,等桶接满水后再处理桶里面的水。如果是每读取一个字节就处理一个字节,这样子读取也太累了。

    5.OutputStream(输出流)

    跟上面的一样

    5.1 OutputStream的基本方法

    输出流,红色部分

    6.Reader流

    字符流输入流

    6.1.Reader的基本方法

    内容为中文的常用

    7.Writer流

    关系图

    相关文章

      网友评论

        本文标题:001.流 上卷 概念

        本文链接:https://www.haomeiwen.com/subject/wavlottx.html