趣谈AIO、BIO、NIO

之前写过一篇文章,关于介绍IO模型的,在里面就讲到了NIO:

IO模型-NIO多路复用

本文章不对Java中IO的具体如何使用做过多的解释,主要是IO流总结以及AIO、BIO、NIO之间做一个比较。

#在Java中的IO流,其实就是输入输出。

根据输入输出文件的类型不同又可以继续划分:

字节流:数据流中最小的数据单元是字节。

二进制文件的输入输出(InputStream、OutputStream),也就是说可以操作任何类型数据。

字符流:数据流中最小的数据单元是字符, Java中的字符是Unicode编码,一个字符占用两个字节。

特殊的二进制文件的输入输出(Reader、Wirter),例如文本格式,采用特定编码格式。

而后根据这四个抽象类衍生出其他流:

字符缓冲流、字节缓冲流、转换流、打印流、对象操作流、序列流、处理流、节点流等。

#字节流与字符流的区别?

缓存区的概念:字节流是直接操作文件本身,而字符流会经过缓冲区(内存),通过了缓冲区才会对文件进行操作。

流一旦打开就必须关闭,使用close方法,流关闭一般放入finally语句块中。

#处理流如何关闭?

如果调用的是处理流,那么就关闭处理流。

#read and writer

InputStream里的read()返回的所读取的字节的int型(范围0-255),read(byte [ ] data)将读取的字节储存在这个数组。返回的就是传入数组参数个数。

OutputStream里面的write()是将指定字节传入数据源。

好了IO流的部分就讲到这里,这里不对IO流的具体操作进行解释。

之前有篇文章阐述了IO模型以及NIO的场景。

#这里对AIO、BIO、NIO进行下比较:

AIO:异步非阻塞

例子:叫外卖,点个外卖,继续打王者。

BIO:同步阻塞

例子:订餐,出去打王者,时间到了,回来看看问下老板好了没有。

NIO:同步非阻塞

例子:去餐厅吃饭,做下点餐,一直等,不能走,等到菜上来为止。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值