io 体系回顾:
流的概念:
java 程序 通过流来进行完成输入与输出的。流是生产或者消费信息的抽象,流通过java 的 输入/输出系统与物理设备相连,尽管与他们链接的物理设备不尽相同,所有流的行为具有相同的方式.这样,相同的输入输出类和方法适用于所有类型的外部设备,这意味着一个输入流能够抽象多种不同类型的输入:磁盘文件,键盘或者网络套接字,
同样一个输出流可以输出到控制台,磁盘文件,或者相连的网络,流是处理输入与输出的一个洁净地方,例如他不需要代码理解键盘与网络的不同,java中的流的实现在java.io 包定义的类层次结构内部的
从功能来分:输入流与输出流
从流的结构来分:字节流,字符流
字节流的输入流与输出流基础是InputStream 和OutputStream这两个抽象类,字节流的输入与输出操作是由这两个类的子类实现的
字符流的输入输出基础是抽象类Reader 和Writer
在最底层,所有的输入与输出都是字节形式
输入流(java 阻塞io 读取逻辑):
读取的逻辑:
1.open a stream
2.while more information ----->while 循环
3.read information
4.close thestream
输出流(java 阻塞io 写入逻辑):
输出的逻辑:
1.open a stream
2.while more information ----->while 循环
3.write information
4.close thestream
InputStream 类的层次:
OutputStream 类的层次
inputStream 与OutputStream 中FilterOutputStream FilterInputStream属于过滤流,他们必须依赖于节点流,典型的Buffered 就是过滤流。当然了,除了这两个,其他都是节点流,节点流即能与外部打交道操作的流 ,过滤流是用来进一步封装处理节点的流,使用的是装饰者模式
在节点流与过滤流的处理体系上,使用的是装饰者模式(很重要) == > new ccc(new bbb(new aaa))
-------------------------------------------------IO 基础知识 ------------------------------------------------------
字节流顶层父类:
输入流:IputStream
输出流:OutputStream
字符流顶层父类:
Reader
Writer