一、IO原理
1.底层原理
- 操作系统在进行IO的时候,实际上并不是即时操作,它们是通过缓冲区的,也就是说,我们读写文件都是通过一个中介来进行的。读系统就是把内核缓存区的内容复制到进程缓冲区;写系统就是把进程缓冲区的内容复制到内核缓存区。
- 之所以这样做的原因是避免大量的IO操作,大量的IO操作效率是很低的。这个过程并不等价于数据在内核缓冲区和磁盘之间的交换。
2.
- NIO和IO的实现方式有所不同,NIO实在JDK1.4之后引入的,采用的是块的实现方式,而IO采用流的实现方式
3.提供了两套API实现方式
- 标准输入输出的NIO
- 网络编程的NIO
4.流与块的优缺点
- 基于流的IO,速度慢,但是为流式数据提供过滤器
- 基于块的IO,速度快,但是缺乏像流的雅兴和简单性
5.Buffer读取数据的步骤
- 将数据读取到buffer之中(buffer会记录写入了多少数据)
- 调用flip()方法(将buffer从写模式变成读模式)
- 在buffer中读取数据
- 调用clear()或者compact()方法(clear() 方法会清空整个缓冲区。compact() 方法只会清除已经读过的数据。任何未读的数据都被移到缓冲区的起始处,新写入的数据将放到缓冲区未读数据的后面。)
6.关于Channel
- 对Channel的读写必须通过buffer
- Channel是可以异步读写的
- Channel是双向的,既可以读又可以写
7.NIO中的Channel有如下几种
- FileChannel,文件中读取数据
- DatagramChannel,读写UDP网络协议数据
- SocketChannel,读写TCP网络协议数据
- SocketServerChannel,可以监听TCP网络协议数据
二、源码:
- CSDN:https://blog.csdn.net/weixin_44630050
- 博客园:https://www.cnblogs.com/ruigege0000/
- 欢迎关注微信公众号:傅里叶变换,个人账号,仅用于技术交流
posted on
2021-12-13 00:13 心悦君兮君不知-睿
阅读(
125
) 评论(
) 编辑
Original: https://www.cnblogs.com/ruigege0000/p/15681242.html
Author: 心悦君兮君不知-睿
Title: Java连载150-NIO详解(一)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/607924/
转载文章受原作者版权保护。转载请注明原作者出处!