I/O流概述
I/O(Input/Output)流,即输入/输出流,是Java中实现输入/输出的基础,它可以方便地实现数据的输入/输出操作。
I/O流有很多种,按照不同的分类方式,可以分为以下三类:
1.字节流和字符流
根据流操作的数据单位的不同,可以分为字节流和字符流。字节流以字节为单位进行数据的读写,每次读写一个或多个字节数据;字符流以字符为单位进行数据的读写,每次读写一个或者多个字符数据。
2.输入流和输出流
根据流传输方向的不同,又可分为输入流和输出流。其中输入流只能从流中读取数据,而不能向其写入数据;输出流只能向流中写入数据,而不能从中读取数据。
3.节点流和处理流
根据流的功能不同,可以分为节点流和处理流。其中节点流也被称为低级流,是指可以从一个特定的I/O设备(如磁盘)读写数据的流,它只能直接连接数据源,进行数据的读写操作;处理流也被称为高级流,它用于对一个已存在的节点流进行连接和封装,通过封装后的流来实现流的读写能力。当使用处理流时,程序不会直接连接到实际的数据源,而是连接在已存在的流之上。
Java中的I/O流主要定义在java.io包中,该包下定义了很多类,其中有4个类为流的顶级类,分别为InputStream和OutputStream,Reader和Writer。其中InputStream和OutPutStream是字节流,而Reader和Writer是字符流;InputStream和Reader是输入流,而OutPutStream和Writer是输出流。I/O流顶级类的分类如图1所示。
图1 I/O流的顶层类