首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java NIO 容易入门

2012-12-23 
Java NIO 简单入门为什么用NIO??优点:NIO以块的方式处理数据,NIO是以流(字节)方式处理。NIO将最耗时的IO操

Java NIO 简单入门

为什么用NIO?

?

优点:NIO以块的方式处理数据,NIO是以流(字节)方式处理。NIO将最耗时的IO操作(即填充和提取缓冲区)转移回操作统。

?

缺点:面向块的I/O缺少一些面向流的I/O所具有的优雅性和简单性

?

补充:JDK1.4以后,java.io.*已经以NIO为基础重新实现了,处理也会很快。

?

?

缓冲区Buffer

?

任何时候访问NIO中的数据,都是通过缓冲区来操作。本质是一个数组,提供了数据的结构化访问,

还可以跟踪系统的读写进程。

?

最简单的是ByteBuffer。还有其他基于Java基本类型的Buffer。例如 CharBuffer,IntBuffer...

?

Buffer有三个属性:

position 变量跟踪已经写了多少数据。更准确地说,它指定了下一个字节将放到数组的哪一个元素中

?

limit 变量表明还有多少数据需要取出(在从缓冲区写入通道时),或者还有多少空间可以放入数据(在从通道读入缓冲区时)

?

capacity 表明可以储存在缓冲区中的最大数据容量。实际上,它指定了底层数组的大小 — 或者至少是指定了准许我们使用的底层数组的容量

?

flip() ,clear()等操作都是对这些变量的改变,改变缓冲区的属性?

?

?

通道Channel

?

通过通道,可以读取和写入数据。等价于原I/O的流。通道是连接缓冲区的纽带,对数据的操作是通过通道来处理的,通道直接操作缓冲区。

?

通道是双向的,这点跟流不同。

?

“从一个通道中读取很简单:只需创建一个缓冲区,然后让通道将数据读到这个缓冲区中。写入也相当简单:创建一个缓冲区,用数据填充它,然后让通道用这些数据来执行写入操作”

?

总结

?

NIO的精髓就是Buffer 和 Channel,明白了它们的原来细节,接下来就是熟悉API,熟练应用到你的项目中去了。在这里推荐一个很好的NIO入门材料(IBM开发社区的NIO入门),希望对您学习NIO有帮助

?

热点排行