我不太了解它们之间的区别,因此我对这两个软件包有一些疑问。

在Google上浏览了一下之后,似乎Oracle决定使用JDK7版本的更新和增强的NIO包来更新NIO.2包。

  • NIO包的性能与NIO.2包的性能如何?
  • NIONIO.2有什么大变化? (例如新方法,功能)
  • 为什么必须更新原始NIO包?
  • 如今NIO.2只是NIO包的同义词吗?

  • 这并不是我想在代码中使用旧版包,我对此真的很好奇。请告诉我他们的区别?

    最佳答案

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

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

  • 为了克服这些问题,在Java 4中引入了java.nio包。主要功能是:
  • channel 和选择器: channel 是对较低级别文件系统功能(例如,内存映射文件。
  • 缓冲区:所有基本类的缓冲区( boolean 值除外)。
  • Charset:字符集(java.nio.charset),编码器和解码器,用于映射字节和Unicode符号

  • 在Java 7中,引入了java.nio.file软件包,它为处理符号链接(symbolic link),文件属性访问提供了更好的支持,并特别支持通过诸如Path,Paths和Files之类的扩展文件系统。您可能想看看java.nio.file package description以获得有关此内容的更多详细信息。

    考虑到这一点:



    它们有不同的用途。要指出重大更改,您可能需要查看所有新软件包java.nio.file



    没有。引入了新软件包,而不是对其进行了更新。



    不,它们不是同义词。比较它们之间的性能也没有太大意义,因为它们有不同的用途。 NIO是一种更抽象的底层数据I/O,而NIO2则专注于文件管理。

    希望这可以帮助。

    [书目:Oracle认证专业Java SE7-全面的OCJP7认证指南,
    S.G. Ganesh和Tushar Sharma撰写-第9章]

    关于java - Java:NIO和NIO.2之间到底有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25537675/

    10-11 20:49