Java IO概述
IO就是输入/输出。Java IO类库基于抽象基础类InputStream和OutputStream构建了一套I/O体系,主要解决从数据源读入数据和将数据写入到目的地问题。我们把数据源和目的地可以理解为IO流的两端。当然,通常情况下,这两端可能是文件或者网络连接。
我们用下面的图描述下,加深理解:
从一种数据源中通过InputStream流对象读入数据到程序内存中
![676d47347367391d3dee3d83a39ffcf6.png](https://i-blog.csdnimg.cn/blog_migrate/64129659f837d7634e3317f830470dee.jpeg)
当然我们把上面的图再反向流程,就是OutputStream的示意了。
![c16d02ef95c45d273c622d894eb51579.png](https://i-blog.csdnimg.cn/blog_migrate/ff9604658c6092779f9e268a7b9ca0a7.jpeg)
其实除了面向字节流的InputStream/OutputStream体系外,Java IO类库还提供了面向字符流的Reader/Writer体系。Reader/Writer继承结构主要是为了国际化,因为它能更好地处理16位的Unicode字符。
在学习是这两套IO流处理体系可以对比参照着学习,因为有好多相似之处。
要理解总体设计
刚开始写IO代码,总被各种IO流类搞得晕头转向。这么多IO相关的类,各种方法,啥时候能记住。
其实只要我们掌握了IO类库的总体设计思路,理解了它的层次脉络之后,就很清晰。知道啥时候用哪些流对象去组合想要的功能就好了,API的话,可以查手册的嘛。
首先从流的流向上可以分为输入流