Java IO流 学习笔记
一、IO流的分类
按流的方向分类:
1. 输入流:从数据源到程序(以InputStream、Reader结尾的流)
2. 输出流:从程序到目的地(以OutPutStream、Writer结尾的流)
按处理的数据单元分类:1.字节流 (Btye Stream)
2.字符流 (Character Stream)
- 字节流 (Btye Stream) :以字节为单位获取数据;有两个基本的类 : InputStream , OutputStream (都是抽象类不能直接创建对象);以Stream结尾的流一般是字节流
- 字符流 (Character Stream) :以字符为单位获取数据;有两个基本类: Reader , Writer (都是抽象类不能直接创建对象);上以Reader/Writer结尾的流一般是字符流
按处理对象不同分类:1.节点流
2.处理流
- 节点流:直接从数据源或目的地(节点)读写数据
- 处理流: 不直接连接到数据源或目的地,处理流也称过滤流
二、字节流与字符流的区别:
字节流直接操作文件。
字符流先将文件读入缓存,再操作缓存。
字节流处理单元为 1 个字节,操作字节和字节数组。字节流是最基本的,可用于任何类型的对象。
字符流一次处理2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串。Unicode 包含所有字符,处理文本时用字符流不易出现乱码。只能处理字符,字符流处理图片、音频和视频后会损坏文件。
三、IO操作流程
- 确定源(使用File类打开一个文件)
- 选择流
- 操作 (读/写)
- 释放系统资源(关闭输入/输出)