下面这张图给出了nio类库的各个类之间的关系,这样你就能知道该怎样移动和转换数据了。举例来说,如果你想把byte数组写进文件,你得先用ByteBuffer.wrap( )方法把这个byte数组wrap成buffer,再用getChannel( )在FileOutputStream上打开一个channel,然后才能用ByteBuffer把数据写入FileChannel。
注意,ByteBuffer是往channel里读写数据的唯一途径,而且你只能创建这一种byte基本类型的缓冲器ByteBuffer,其余基本类型的缓冲器要用"as" 方法来获取 。另外你不能把基本类型buffer转换成ByteBuffer ,不过你可以用view buffer往ByteBuffer里读写基本类型数据 ,所以这实际上也不是什么限制了。
另外,视图是一种逻辑上的概念,通过视图操作实质上就是对ByteBuffer的操作,就像通过Iterator操作List一样。虽然我们可以用wrap() 直接把char数组转换成CharBuffer,但实际上它还是一个ByteBuffer,而CharBuffer只是它的view。由此可知,我们操控的对象永远都是ByteBuffer,因为只有它才能往channel里读写数据 ,其他基本类型数据缓冲器原理一样。
原文链接:http://jiangzhengjun.iteye.com/blog/515715
【编辑推荐】
- 浅析Tomcat NIO 配置
- Java NIO API详解
- Java NIO基本使用实例
- Java NIO的介绍及工作原理
- Apache Ant对决Make:实战Java构建工具
推荐阅读
Tomcat 6.X实现了JCP的Servlet 2.5和JSP2.1的规范,并且包括其它很多有用的功能,使它成为开发和部署web应用和web服务的坚实平台。NIO (No-blocking I/O)从JDK 1.4起,NIO API作为一个基于缓冲区,并能提供非阻塞I>>>详细阅读
本文标题:Java NIO类库关系图解
地址:http://www.17bianji.com/kaifa2/Java/1617.html
1/2 1