IO流概念的理解

IO流简介

  • 流是指在计算机的输入与输出之间运动的数据序列,流序列中的数据既可以是未加工的原始二级制数据,也可以是经过一定编码后符合某种格式规定的特定数据。

  • Java程序通过流来完成输入输出,流通过Java的输入输出系统与物理设备连接。尽管与他们连接的物理设备不尽相同,但所有流的操作是相同的,这意味着一个输入流能够抽象为多种不同类型的输入,如磁盘文件、键盘文件、键盘或者网络套接字。同样一个输出流可以输出到控制台、磁盘文件或者相连的网络中。

  • Java语言把不同类型的输入源、输出源(键盘、文件和网络等)抽象为流(Stream),而其中输入或输出的数据被称为数据流,输入流只能从中读取数据,而不能向其中写入数据;输出流只能向其中写入数据,而不能从中读取数据。

  • Java语言定义了两种类型的流:字节流(Byte Stream)和字符流(Charater Stream),并且提供了处理这两种类型流的输入输出流类。

  • 在Java语言中数据的输入输出处理都是通过对数据流的操作来完成的,完成这些操作的类都定义在java.io包中。下图就是java.io包中提供的一些处理数据流和文件的类,他们都是Object类的直接子类。
    IO流概念的理解

  • File类是专门用来处理文件的类,RandomAccessFile类实现了文件的随机读写,InputStream和OutputStream类以及其子类都是处理以字节为基本单位的字节流类,Reader和Writer类及其子列是专门处理 字符流类的。InputStream和OutputStream类、Reader和Writer类都是抽象类,提供了所有子类共有的一些读写字节或者字符数据的操作,其派生的子类在此基础上通过实现某些接口,添加一些特殊的方法,来满足不同的读写需要,从而提高读写数据的效率或者增强数据的功能。