- I/O 是 Input/Output 的缩写,I/O 技术是非常实用的技术,用于处理数据传输。如读/写文件,网络通讯等;
- Java 程序中,对于数据的输入/输出操作以“流(stream)”的方式进行;
- java.io 包下提供了各种“流”类和接口,用以获取不同种类的数据,并通过方法输入或输出数据;
流的分类
- 按操作数据单位不同分为:字节流(8 bit),字符流(按字符);
- 按数据流的流向不同分为:输入流 / 输出流;
- 按流的角色不同分为:节点流,处理流 / 包装流;

1)Java 的 I/O 流共涉及 40 多个类,实际上非常规则,都是从如上四个抽象基类派生的;
2)由这四个类派生出来的子类名称都是以其父类名作为子类后缀;

字节流
字符流
输入流
输出流
节点流
节点流可以从一个特定的数据源读写数据,如 FileReader、FileWriter。
处理流 / 包装流
处理流(也叫包装流)是“连接”已存在的流(节点流或处理流)之上,为程序提供更为强大的读写功能,如 BufferedReader、BufferedWriter。
字节流和处理流
1、节点流是底层流/低级流,直接跟数据源相接。
2、处理流包装节点流,既可以消除不同节点流的实现差异,也可以提供更方便的方法来完成输入输出。
3、处理流(也叫包装流)对节点流进行包装,使用了修饰器设计模式,不会直接与数据源相连。
处理流的功能主要体现在以下两个方面:
- 性能的提高:主要以增加缓冲的方式来提高输入输出的效率。
- 操作的便捷:处理流可能提供了一系列便捷的方法来一次输入输出大批量的数据,使用更加灵活方便。
