Java:NIO 和 NIO.2 到底有什么区别?

2024-01-12

我不太明白它们之间有什么不同,所以我对这两个包有一些疑问。

在 Google 上浏览了一下后,Oracle 似乎决定更新NIO包含更新和增强的包NIO.2包作为 JDK7 版本的一部分。

  1. 性能如何NIO包与比较NIO.2包裹?
  2. 相比之下有哪些重大变化NIO to NIO.2? (例如新方法、新功能)
  3. 为什么原来的NIO包需要更新吗?
  4. Is NIO.2只是同义词NIO现在的包?

这并不是说我想在我的代码中使用遗留包,我只是对此很好奇。请告诉我他们的区别?


Java 最初是通过提供File类,在java.io包来访问文件系统。该对象代表一个文件/目录,并允许您执行一些操作,例如检查文件/目录是否存在、获取属性和删除它。但它也有一些缺点。仅举几例:

  • File 类缺少一些重要的功能,例如复制方法。
  • 它还定义了许多返回的方法boolean。可以想象,一旦出现错误,false被返回,而不是抛出异常。事实上,开发人员无法知道失败的原因。
  • 没有提供对符号链接支持的良好处理。
  • 提供了一组有限的文件属性。

为了克服这些问题,java 4 中引入了 java.nio 包。主要特性是:

  • 通道和选择器:通道是较低级别文件系统功能的抽象,例如内存映射文件。
  • 缓冲区:所有原始类的缓冲(布尔值除外)。
  • Charset:用于映射字节和 Unicode 符号的字符集 (java.nio.charset)、编码器和解码器

java 7 中引入了 java.nio.file 包,为处理符号链接、文件属性访问提供了更好的支持,特别是通过 Path、Paths 和 Files 等类支持扩展文件系统。您可能想看看java.nio.file包说明 http://docs.oracle.com/javase/7/docs/api/java/nio/file/package-summary.html以获得更多详细信息。

考虑到这一点:

NIO到NIO.2有哪些大的变化? (例如新方法、 特征)?

它们有不同的目的。要指出重大变化,您可能需要查看全新的软件包java.nio.file.

为什么原来的NIO包要更新?

事实并非如此。引入了新的软件包而不是更新了。

如今,NIO.2 是否只是 NIO 包的代名词? NIO包的性能与NIO.2包相比如何?

不,它们不是同义词。比较它们之间的性能也没有多大意义,因为它们服务于不同的目的。 NIO 是更抽象的低级数据 I/O,NIO2 专注于文件管理。

[参考书目:Oracle Certified Professional Java SE7 - 全面的 OCJP7 认证指南, 作者:S.G.Ganesh 和 Tushar Sharma - 第 9 章]

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java:NIO 和 NIO.2 到底有什么区别? 的相关文章

随机推荐