Java最初是通过在包中提供该类来访问文件系统而开始的。此对象表示一个文件/目录,并允许您执行一些操作,例如检查文件/目录是否存在,获取属性并删除它。但是,它有一些缺点。仅举几例:File
java.io
- File 类缺少一些重要的功能,如复制方法。
- 它还定义了许多返回 .可以想象,在发生错误的情况下,返回,而不是引发异常。事实上,开发人员无法知道为什么会失败。
boolean
false
- 没有对符号链接的支持提供良好的处理。
- 提供了一组有限的文件属性。
为了克服这些问题,在java 4中引入了java.nio包。主要特点是:
- 通道和选择器:通道是对较低级别文件系统功能的抽象,例如内存映射文件。
- 缓冲区:缓冲所有基元类(布尔值除外)。
- 字符集:字符集 (java.nio.charset)、编码器和解码器,用于映射字节和 Unicode 符号
在java 7中,引入了java.nio.file包,为处理符号链接,文件属性访问提供了更好的支持,特别是通过Path,Paths和File等类支持扩展文件系统。您可能希望查看java.nio.file包描述,以获取有关此内容的更多详细信息。
考虑到这一点:
从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章]