美文网首页
io——流类

io——流类

作者: 鉴闻俗说 | 来源:发表于2017-12-20 22:44 被阅读0次

    一、 流的概念

    Java程序通过流来完成输入/输出。流是生产或消费信息的抽象。流通过Java的输入/输出系统与物理设备连接。尽管与它们连接的物理设备都不尽相同,但是所有流的行为具有同样的方式。因此,同样的输入/输出类和方法适用于所有类型的外部设备。这就意味着一个输入流能够抽象多种不同类型的输入:从磁盘文件,从键盘或从网络套接字。同样,一个输出流可以输出到控制台,磁盘文件或相连的网络。流是处理输入/输出的一个纯净的方法,例如它不需要代码理解键盘和网络的区别。Java中流的实现是在java.io包定义的层次结构内部的。

    二、 输入/输出流概念

    1、 输入输出时,数据在通信通道中流动。所谓“数据流(Stream)”指的是所有数据通信通道之中,数据的起点和终点。信息的通道就是一个数据流。只要是数据从一个地方“流”到另一个地方,这种数据流动的通道都可以称为数据流。

    2、 输入/输出是相对于程序来说的。程序在使用数据时所扮演的角色有两个:一个是源,一个是目的地。若程序是数据流的源,即数据的提供者,这个数据流对于程序来说就是一个“输出数据流”(数据从程序流出)。若程序是数据流的终点,这个数据流对程序而言就是一个“输入数据流”(数据从程序外流向程序)。

    三、 输入/输出类

    1、 在java.io包中提供了60多个类(流)。
    2、 从功能上分为两大类:输入流和输出流。
    3、从流结构上可分为字节流(以字节为处理单位或称为面向字节)和字符流(以字符为处理单位或称为面向字符)。

    四、字节流和字符流

    1、 字节流的输入流和输出流基础是InputStream和OutputStream这两个抽象类,字节流的输入输出操作由这两个类的子类实现。字符流是Java1.1版后新增加的以字符为单位进行输入输出处理的流,字符流的输入输出基础是抽象类Reader和Writer。

    2、 Java 2 之前只有字节流,Java 2 中定义了字符流。字节流(byte stream)为处理字节的输入和输出提供了方便。例如使用字节流读取或写入二进制数据。字符流(character stream)为字符的输入和输出提供了方便。它们采用了统一的编码标准,因而可以国际化。当然在某些场合,字符流比字节流更有效。

    3、需要注意的是:在Java的最底层,所有的输入/输出都是字节形式的。基于字符的流只是为了处理字符提供方便有效的方法。

    4、字节流类用于向字节流读写8位二进制的字节;字符流类用于想字符流读写16位二进制字符。

    五、 流的分类

    • 第一种划分方法 两种基本的流是:输入流(Input Stream)和输出流(Output Stream)。可从中读出一系列字节的对象称为输入流。而能向其中写入一系列字节的对象称为输出流。

    1、输入流
    读数据的逻辑为

    open a stream
    while more information
    read information
    close the stream //一定要记住关闭流
    

    2、输出流
    写数据的逻辑为

    open a stream 
    while more information
    write information
    close the stream //一定要记住关闭流
    
    • 第二种划分方法
      节点流:从特定的地方读写的流类,例如:此案或一块内存区域。
      过滤流:使用节点流作为输入或输出。过滤流是使用一个已经存在的输入流或输出流连接创建的。
      image.png

    上一篇:装饰模式(Decrator)

    相关文章

      网友评论

          本文标题:io——流类

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