试用JDK 1.4的新I/O

ZDNet软件频道 时间:2002-12-30 作者:BUILDER.COM |  我要评论()
本文关键词:
JDK 1.4的I/O API改善了的原有的性能,包括缓冲区管理、用于网络和文件的可伸缩I/O操作、用于字符集转换的编码器和解码器,以及用于模式匹配的正规表达式。让我们快速浏览一下JDK 1.4的新I/O操作,看看它向我们提供了什么。

JDK 1.4I/O API改善了的原有的性能,包括缓冲区管理、用于网络和文件的可伸缩I/O操作、用于字符集转换的编码器和解码器,以及用于模式匹配的正规表达式。难怪人们把JDK 1.4当作Java开发的巨大进步。让我们快速浏览一下JDK 1.4的新I/O操作,看看它向我们提供了什么。

它为什么是新的?

JDK 1.4的I/O被认为是新的,其原因是它提供了一些额外的支持。例如在非阻断 I/O在UNIX和Windows里出现过,但是Java只支持先前版本的阻断I/O,因为它设计适用的对象是PC和其他电子设备,从智能卡到超级计算机。

几个大型的Java支持商,例如BEA 系统、IBM和Sun,定义了新I/O的规范。这些企业都是高吞吐量Java应用程序,如WebLogic和WebSphere的大型支持商。

现在我们来看看JDK 1.4里I/O的增加的一些功能,包括缓冲区、字符集转换、正规表达式、通道、高级文件处理和非阻断I/O等。


获得代码
这里下载本文里的源代码。
缓冲区

缓冲区提供了保存数据集的容器。把它们当作带有固定容量数组的DataInputStream和DataOutputStream的组合。你可以使用它们读取或者编写专用的基本数据元素。

新I/O提供了七种类型的缓冲区:

  • ByteBuffer
  • CharBuffer
  • DoubleBuffer
  • FloatBuffer
  • IntBuffer
  • LongBuffer
  • ShortBuffer

每个缓冲区都只能容纳一个专用的基本数据元素,但是ByteBuffer除外。

Listing A显示了缓冲区的基本机制。叫做buff的CharBuffer对象从args[0]读取字符串,然后把它写到标准的输出。

注意,缓冲区的成员方法length()和数组的数据成员长度是不同的。缓冲区的成员方法返回的是CharBuffer对象的剩余长度。通过返回CharBuffer对象的长度,它像DataInputStream或者DataOutputStream一样工作,但是它既可以读也可以写。

此外,缓冲区能够被分为非直接缓冲区或者直接缓冲区。非直接缓冲区在逻辑上是用来保存数据的,所以你不需要担心内存的分配。Listing A里的例子用到了非直接缓存。另一方面,直接缓冲区是用来创建连续内存块的。你会在本文所用的源代码里找到一个直接缓冲区。由于直接缓冲区需要系统本地的I/O操作,选择直接还是非直接缓冲区的时候要考虑其创建的代价和性能。


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134