IO(Input Output)流
IO流用来处理设备之间的数据传输,对数据的操作是通过流的方式,Java用于操作流的对象都在IO包中。
完整IO流结构图如下:
IO流分类
1. 处理的数据单位不同:
(1)字符流
一次读入或读出是8位二进制。字节流处理单元为 1 个字节,操作字节和字节数组。
(2)字节流
一次读入或读出是16位二进制。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串(Java内用Unicode编码存储字符)
2.数据流方向不同:
输入流,输出流
3.功能不同(流是否直接与特定的地方(如磁盘、内存、设备等)相连):
(1)节点流
节点流从一个特定的数据源读写数据。即节点流是直接操作文件,网络等的流,例如FileInputStream和FileOutputStream,他们直接从文件中读取或往文件中写入字节流。
(2)处理流
“连接”在已存在的流(节点流或处理流)之上通过对数据的处理为程序提供更为强大的读写功能,即是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader。处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接。
java.io包提供的类
如下图所示: