一、流的概念和分类
JAVA程序中,对于数据的输入、输出操作以“流”(stream)方式进行;J2SDK提供了各种各样的“流”类,用以获取不同种类的数据;程序中通过标准的方法输入或输出数据。
java.io包中定义了多个流类型(类或抽象类)来实现输入、输出功能;可以从不同角度对其分类。
(1)按数据流的方向不同(站在程序的角度)
输入流:读数据使输入流
输出流:写数据时输出流
(2)按处理数据的单位不同
字节流:字节流是最原始的流(8位1字节)
字符流:字符流是以字符(1个字符是2个字节)为单位
(3)按功能不同
节点流:可以从一个特定的数据源(节点)读写数据(如:文件、内存)(0/1二进制流)
处理流:是“连接”在已存在的流(节点流或处理流)之上,通过对数据的处理为程序提供更为强大的读写功能。
二、四个抽象类
J2SDK所提供的所有流类型位于包java.io内都分别继承自以下4中抽象流流行。
1、InputStream
继承自InputStream的流都是用于向程序中输入数据,且数据的单位为字节(8bit)。下图深色为节点流,浅色为处理流。
InputStream的基本方法:
2、OutputStream
继承自OutputStream的流都是用于从程序中输出数据,且数据的单位为字节(8bit)。下图深色为节点流,浅色为处理流。
OutputStream基本方法:
注意:在close()之前先调用flush()
3、Reader
继承自Reader的流都是用于向程序中输入数据,且数据的单位为字符(16bit)。下图深色为节点流,浅色为处理流。
Reader基本方法:
4、Writer
继承自Writer的流都是用于从程序中输出数据,且数据的单位为字符(16bit)。下图深色为节点流,浅色为处理流。
Writer基本方法: