认识IO流

一.原理

I:input----------------------O:output

IO流:输入输出流。

流的本质就是数据传输。

流的作用就是为数据源和目的地简历一个传输通道。

二. 流的分类

1. 按照流的方向划分

输入流: 将存储媒介(磁盘)中的数据输入到内存中。

输出流: 将内存中的数据输出到存储媒介中。

2.按照流的操作单元划分

2.1、字节流

InputStream、OutputStream

将原始数据解析成二进制数据,读写均为字节数据,
二进制数据不需要编码和解码,比文本IO效率更高。

2.2、字符流

Reader、Writer.将原始数据解析成一种字符,输入输出需要编码解码。

2.3、节点流

从具体介质读写数据的类。

2.4、处理流

对节点流进行包装,进行特殊的处理。

2.5、字节流和字符流的区别?

2.5.1、读写单位不同:
字节流以字节为单位(一个字节为8bit位);字符流以字符为单位。
2.5.2、操作对象不同:
字节流可以处理任何数据,字符流只能处理字符相关的数据。

3. 按照I/O设备划分

3.1、网络IO

通过网络进行数据的发送和接收,

浏览器发送请求给服务器,浏览器接收服务器返回的数据。

3.2、磁盘IO

通过磁盘进行读写操作。

三、同步和异步/阻塞和非阻塞

1.同步和异步:

同步: 被调用方做完事情之后才返回!

异步: 被调用方先返回,然后再做事情,做完之后通知调用方.

区别:被调用方的执行方式和返回时机.

注意:逻辑对象为被调用方

2.阻塞和非阻塞:

阻塞:调用方一直等待被调用方,什么也不做。

非阻塞:调用方没有等待被调用方,去做其他事情去了。

区别:在被调用方返回结果之前的这段时间里,调用方是否一直处于等待状态。

注意:逻辑对象为调用方

四、I/O模式

通过烧水案例来解释三种模式;一排水壶在烧水!

1.BIO:同步阻塞I/O模式

我来烧水,烧开一壶才烧下一壶,
在等待水烧开的这段时间,我处于等待状态,什么都没做。

2.NIO:同步非阻塞I/O模式

我来烧水,烧开一壶才烧下一壶,
我每2分钟去看看水烧开没有,没开的话就去做其他事情。

3.AIO:异步非阻塞I/O模式

我来烧水,几个水壶同时烧,
为水壶装一个开关,去做其他事情,水壶会自动通知我是否烧开。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值