我不太明白它们之间有什么不同,所以我对这两个包有一些疑问。
在 Google 上浏览了一下后,Oracle 似乎决定更新NIO
包含更新和增强的包NIO.2
包作为 JDK7 版本的一部分。
- 性能如何
NIO
包与比较NIO.2
包裹?
- 相比之下有哪些重大变化
NIO
to NIO.2
? (例如新方法、新功能)
- 为什么原来的
NIO
包需要更新吗?
- 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(使用前将#替换为@)