IO流
2025年11月28日大约 2 分钟
IO流
认识IO流
在Java中,IO流(Input/Output Stream)是用于处理输入和输出数据的核心概念。
- IO流可以分为两大类:输入流和输出流
- 输入流(Input):负责把数据读到内存中。
- 输出流(Output):负责把内存中的数据写出到外部设备(如文件、网络等)。
- IO流的分类:
- 按照流方向分为:输入流和输出流。

- 按照数据处理方式分为:字节流和字符流。

- 按照流方向分为:输入流和输出流。
- 根据上面,总结IO流的体系有:
- 字节输入流:InputStream(读字节数据)及其子类
- 字节输出流:OutputStream(输出字节数据的) 及其子类
- 字符输入流:Reader(读字符数据)及其子类
- 字符输出流:Writer(输出字符数据)及其子类
注意
上面提到的 InputStream、OutputStream、Reader、Writer 都是抽象类,不能直接实例化对象。
因此接下来将对它们各自的实现类进行介绍。
文件字节输入流(FileInputStream)
- 作用:可以将磁盘文件中的数据以字节的形式读入到内存中。
| 构造器 | 说明 |
|---|---|
FileInputStream(String name) | 通过文件路径创建文件字节输入流对象。 |
FileInputStream(File file) | 通过 File 对象创建文件字节输入流对象。 |
- 常用方法:
| 方法 | 说明 |
|---|---|
int read() | 读取一个字节并返回其整数值,如果到达文件末尾则返回 -1。 |
int read(byte[] b) | 将数据读入到字节数组 b 中,返回实际读取的字节数,如果到达文件末尾则返回 -1。 |
注意
- 使用
FileInputStream读取汉字时会出现乱码问题,因为汉字在存储时占用多个字节,而FileInputStream是按字节读取的。- 最好的方式是使用字符流来读取汉字。
- 如果必须使用字节流读取汉字,可以使用
readAllBytes()方法将所有字节一次性读取到字节数组中,然后再转换为字符串。