简介
java NIO 是从JDK4后引入的新的IO API,可以替代标准的IO。NIO与原来的IO有同样的作用和目的,但是使用的方式完全不同,NIO支持面向缓冲区的、基于通道的IO操作。NIO将以更加高效的方式进行文件的读写操作。
好了话不多说,先贴张图。
接下来我会简单的说说思维导图的每个部分,至于具体的还是要各位去研究。
IO和NIO的区别
我们总的知道学NIO 的目的是什么?为什么要学NIO?NIO有什么好的?和IO有什么不一样的? 说白了就是给我们一个学习它的理由。
IO 模型
这里先简单了解一个基本的IO模型有哪些?还要明确一个观点:什么是好的IO模型?
缓冲区
前面两个都是理论的知识,现在的才是需要动手的。缓冲区Buffer,常用的是他的子类ByteBuffer,我们需要对Buffer的继承关系有一定的了解,还要熟悉Buffer中一些常用的属性、方法。这些个最好去看源码。还有一个重要点是:要清除直接缓冲和非直接缓冲的区别。
通道
通道Channel,我们需要了解通道类型有文件类型和网络类型,了解通道的基本用法,需要清楚“NIO是非阻塞的”的这句话是针对网络类型的通道,最后加了一个小案例用于练练手。
选择器
选择器Selector,我们需要了解其基本的使用以及SelectorKey中事件有哪些。Buffer、Channel、Slector是NIO中非常重要的部分,最好可以理解其每部分都有什么作用、扮演什么角色。
其他
接下来时管道和NIO2中新加的一部分帮助开发的类。管道,对于这个单向流动的通道,简单了解一些就行了,个人感觉用处不到。(水平有限,眼界低)
NIO2,为什么叫NIO2呢?在JDK7 后对nio进行一些扩展,使其功能更加强大,所以我们有必要了解一些新加的辅助开发的类。
最后
这个是在学习NIO时整理的思维导图,由于水平有限,可能整理的有些不太恰当,希望各位指出不足,一起进步。