Java标准I/O知识体系图:
![30505eb36c545a6d5d5edb2be2780005.png](https://img-blog.csdnimg.cn/img_convert/30505eb36c545a6d5d5edb2be2780005.png)
![a3a318178e432d3827f4b97db066b6f6.png](https://img-blog.csdnimg.cn/img_convert/a3a318178e432d3827f4b97db066b6f6.png)
![a3a318178e432d3827f4b97db066b6f6.png](https://img-blog.csdnimg.cn/img_convert/a3a318178e432d3827f4b97db066b6f6.png)
1、I/O是什么?
I/O 是Input/Output(输入、输出)的简称,输入流可以理解为向内存输入,输出流是从内存输出。
2、流
流是一个连续的数据流,可以从流中读取数据,也可以往流中写数据。流与数据源,或数据源流向的媒介相关联。
在Java IO流中,流可以是字节流,也可以是字符流。
3、Java I/O 用途与对应的流一览
![4ae4143f31b49ead887e7ed8ec493af0.png](https://img-blog.csdnimg.cn/img_convert/4ae4143f31b49ead887e7ed8ec493af0.png)
注:粗体为节点流。蓝色为转换流(字节流转为字符流)。
4、流的处理
流分节点流和处理流两种。
节点流:可以从或向一个特定的地方(节点)读写数据。如FileInputStream、FileReader。
处理流:是对一个已存在的流的连接和封装,通过所封装的流的功能调用实现数据读写。如BufferedReader.处理流的构造方法总是要带一个其他的流对象做参数。一个流对象经过其他流的多次包装,称为流的链接
5、文件访问
(1)读取文件
如果你需要在不同端使用读取文件,你可以根据你要读的文件是二进制文件还是文本文件,或者根据你要处理的数据是准备采取字节方式还是字符方式,决定使用 FileInputStream 或者 FileReader。两者支持你从文件开头开始到文件结尾读取一个字节或者字符,也可以将读取的多个字节或字符,写入到内存的字节数组或字符数组。
单字节读取文件示例:
![d8c4fb92faeff1f00e16a0298e5a69ad.png](https://img-blog.csdnimg.cn/img_convert/d8c4fb92faeff1f00e16a0298e5a69ad.png)
字节数组读取文件示例