java io ( 一 ) io整体介绍

所谓“流”,就是一种抽象的数据的总称,它的本质是能够进行传输

  • a) 按照“流”的数据流向,可以将其化分为:输入流和输出流。

  • b) 按照“流”中处理数据的单位,可以将其区分为:字节流和字符流。在java中,字节是占1个Byte,即8位;而字符是占2个Byte,即16位。

io框架图

字节输入流:

这里写图片描述

由上面的图可知:

  • InputStream 是以字节输入流的超类。InputStream提供了read()接口从输入流中读取字节数据。

  • ByteArrayInputStream
    是字节数组输入流。它包含一个内部缓冲区,该缓冲区包含从流中读取的字节,ByteArrayInputStream本质就是通过字节数组来实现的。

  • PipedInputStream 是管道输入流,它和PipedOutputStream一起使用,能实现多线程间的管道通信。

  • FilterInputStream 是过滤输入流。它是DataInputStream和BufferedInputStream的超类。

  • DataInputStream 是数据输入流。它是用来装饰其它输入流,它“允许应用程序以与机器无关方式从底层输入流中读取基本 Java数据类型”。

  • BufferedInputStream 是缓冲输入流。它的作用是为另一个输入流添加缓冲功能

  • File 是“文件”和“目录路径名”的抽象表示形式。关于File,注意两点:

    a), File不仅仅只是表示文件,它也可以表示目录!
    
    b), File的超类是Object,而不是InputStream。
    
  • FileDescriptor 是“文件描述符”。它可以被用来表示开放文件、开放套接字等。

  • FileInputStream 是文件输入流。它通常用于对文件进行读取操作

  • ObjectInputStream 是对象输入流。它和ObjectOutputStream一起,用来提供对“基本数据或对象”的持久存储

字节输出流:

这里写图片描述

由以上可知:

  • OutputStream 是以字节为单位的输出流的超类。OutputStream提供了write()接口从输出流中读取字节数据。

  • ByteArrayOutputStream 是字节数组输出流。写入ByteArrayOutputStream的数据被写入一个 byte数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。

  • PipedOutputStream 是管道输出流,它和PipedInputStream一起使用,能实现多线程间的管道通信。

  • FilterOutputStream
    是过滤输出流。它是DataOutputStream,BufferedOutputStream和PrintStream的超类

  • DataOutputStream 是数据输出流。它是用来装饰其它输出流,它“允许应用程序以与机器无关方式向底层写入基本 Java 数据类型”。

  • BufferedOutputStream 是缓冲输出流。它的作用是为另一个输出流添加缓冲功能。

  • PrintStream 是打印输出流。它是用来装饰其它输出流,使它们能够方便地打印各种数据值表示形式。

  • FileOutputStream 是文件输出流。它通常用于向文件进行写入操作。

  • ObjectOutputStream 是对象输出流。它和ObjectInputStream一起,用来提供对“基本数据或对象”的持久存储。

字节输入流和字节输出流的关系:

这里写图片描述

字符输入流:

这里写图片描述

由上图可知:

  • Reader 是以字符为单位的输入流的超类。它提供了read()接口来取字符数据。

  • CharArrayReader 是字符数组输入流。它用于读取字符数组,它继承于Reader。操作的数据是字符。

  • PipedReader
    是字符类型的管道输入流。它和PipedWriter一起是可以通过管道进行线程间的通讯。在使用管道通信时,必须将PipedWriter和PipedReader配套使用。

  • FilterReader 是字符类型的过滤输入流。

  • BufferedReader 是字符缓冲输入流。它的作用是为另一个输入流添加缓冲功能。

  • InputStreamReader 是字节转字符的输入流。它是字节流通向字符流的桥梁:它使用指定的 charset读取字节并将其解码为字符。

  • FileReader 是字符类型的文件输入流。它通常用于对文件进行读取操作。

字符输出流:

这里写图片描述

由以上可知:

  • Writer 是以字符为单位的输出流的超类。它提供了write()接口往其中写入数据。

  • CharArrayWriter 是字符数组输出流。它用于读取字符数组,它继承于Writer。操作的数据是字符。

  • PipedWriter是字符类型的管道输出流。它和PipedReader一起是可以通过管道进行线程间的通讯。在使用管道通信时,必须将PipedWriter和PipedWriter配套使用。

  • FilterWriter 是字符类型的过滤输出流。

  • BufferedWriter 是字符缓冲输出流。它的作用是为另一个输出流添加缓冲功能。

  • OutputStreamWriter 是字节转字符的输出流。它是字节流通向字符流的桥梁:它使用指定的 charset
    将字节转换为字符并写入。

  • FileWriter 是字符类型的文件输出流。它通常用于对文件进行读取操作。

  • PrintWriter 是字符类型的打印输出流。它是用来装饰其它输出流,使它们能够方便地打印各种数据值表示形式。

字符输入流和字符输出流的关系:

这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值