I/O框架
- 什么是流
内存与存储设备之间传输数据的通道 - 流的分类
- 方向
(1) 输入流
(2) 输出流 - 单位
(1) 字节流
(2) 字符流 - 功能
(1) 节点流
(2) 过滤流
- 字节流
-
字节流的父类
(1) InputStream(抽象类)
(2) OutputStream(抽象类) -
字节节点流
(1) FileInputStream
(2) FileOutputStream -
字节过滤流
(1) BufferedOutputStream
(2) BufferedInputStream
(3) 提供了IO效率,减少访问磁盘的次数。数据存放在缓冲区中。flush刷新缓冲区,提交数据 -
对象流
(1) ObjectOutputStream
(2) ObjectInputStream
(3) 增强了读写8种基本数据类型和字符串功能
(4) 读写对象,实现对象的持久化存储
-
序列化/反序列化
(1) 必须实现Serializable接口。 标识序列化功能
(2) 必须保证所有属性均支持序列化。
(3) Transient修饰的为临时属性,不参与序列化
(4) 读取到文件末尾时:java.IO.EOFException -
字符编码
- GBK 简体中文、扩展
- UTF-8 针对Unicode的可变长度字符编码
- GB2312 简体中文
- 当编码和解码方式不一致时,会出现乱码
- 字符流
- 字符流的父类
(1) Reader
(2) Writer - 字符节点流
(1) FileWriter
(2) FileReader - 字符过滤流
(1) BufferedWriter/PrintWriter
(2) BufferedReader
(3) 支持写一行、读一行
- 字符节点流
- 桥转换流
(1) InputStreamReader
(2) OutputStreamWriter
(3) 可将字节流转换为字符流,可设置编码方式(编码与解码要一致) - 使用步骤
(1) 创建节点流
(2) [创建过滤流,设置字符编码集]
(3) 封装过滤流
(4) 读写数据
(5) 关闭流