Java NIO基础知识整理(一)
NIO 特性 1、 为原始类提供缓存支持; 2 、字符集编码解码解决方案; 3 、 Channel :一个新的原始 I/O 抽象; 4 、支持锁和内存映射文件的文件访问接口; 5 、提供多路非阻塞式( non-bloking )的高伸缩性网络 I/O 。 Buffer 在基本 I/O 操作中所有的操作都是直接以流的形式完成的,而在 NIO 中所有的操作都要使用到缓冲区处理,且所有的读写操作都是通过缓冲区完成的。缓冲区( Buffer )是一个线性的、有序的数据集,只能容纳某种特定的数据类型。 一个 Buffer 有以下几个属性: 容量( capacity ) :缓冲区能包含的元素的最大数目。 限制( limit ) :第一个无法被写入或读取的元素坐标。 坐标( position ) :下一个要写入或读取的元素的坐标。 更多 Buffer 的属性和方法参考 http://download.oracle.com/javase/6/docs/api/ 。 另外, http://www.linuxtopia.org/online_books/programming_books/thinking_in_java/TIJ314_027.htm 上面有一个各种类型的 Buffer 和 byte[] 之间相互转换的模型图,挺有帮助的。 图 1 Buffer 内部结构 看一下一个简单的示例