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