JavaIO流(3)-四大抽象类

IO流四大抽象类

InputStream、OutputStream、Reader、Writer
基本上所有的输入输出流都为这四大抽象类的子类
JavaIO流(3)-四大抽象类_第1张图片

而在所有的IO流里 我们又分为节点流和处理流

节点流: 直接怼到文件上或者源头上
处理流: 是对节点流的包装 如提升性能(没有节点流,处理流发挥不了任何作用)

怎么去区分节点流与处理流?
那么一般像带有file、byte等都为节点流(图中标红)

JavaIO流(3)-四大抽象类_第2张图片

一切东西都可以还原成字节,但并不是所有的东西都能还原为字符,所以字节流处理一切,字符流只能处理文本

怎么去理解IO流抽象类实现的Closeable接口

我们要去操作硬盘上的文件, java虚拟机是无法与文件打交道的,我们只能向操作系统发出申请。
Java只是和文件建立了一个联系,在这个联系中java是和操作系统打交道的,所以close并不是释放你用到的资源, java虚拟机我们是无权调用垃圾回收机制的,那么close就是通知os用不到这个文件了os可以释放了。

也可以在官方文档上看到
在这里插入图片描述

OutputStream实现的Flushable接口
我们在操作IO时它内部也有一个类似缓冲的机制,比如缓冲区要求里面的内容达到8k才能输出出去,但你此时达不到8k,就会注入在内存中,那么就可以强制刷新输出

writer的Appendable()的接口
再想文本里写内容的时候有二种模式
一是每一次都覆盖前面的内容
二是从上一次的内容后面追加

四大抽象类的read和write方法

InputStream :
在这里插入图片描述
OutputStream :
在这里插入图片描述

Reader
JavaIO流(3)-四大抽象类_第3张图片
Writer
JavaIO流(3)-四大抽象类_第4张图片

你可能感兴趣的:(java)