Java NIO - 快速指南
Posted 红桃xin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java NIO - 快速指南相关的知识,希望对你有一定的参考价值。
1, 简介
小池 ~ 杨万里 〔宋代〕 ~
泉眼无声惜细流,树阴照水爱晴柔。
小荷才露尖尖角,早有蜻蜓立上头。
Java.nio 包是在 java 1.4 中引入的。与 java NIO 中的 java I/O 相比,引入了面向缓冲区和通道的 I/O 操作数据流,从而提供更快的执行和更好的性能。
此外,NIO API 提供了选择器,它引入了以异步或非阻塞方式侦听 IO 事件的多个通道的功能。在 NIO 中,最耗时的 I/O 活动包括向操作系统填充和排空缓冲区,从而提高速度。
NIO API 的核心抽象如下 -
缓冲区,它是数据、字符集及其相关解码器和编码器的容器,可在字节和 Unicode 字符之间进行转换。
各种类型的通道,代表与能够执行 I/O 操作的实体的连接
选择器和选择键与可选通道一起定义了一个多路复用的非阻塞 I/O 设施。
2,图解
Java NIO 包的主要工作是基于一些核心组件。他们是:
-
缓冲区:此包中的缓冲区可用于原始数据类型。Java NIO 是一个面向缓冲区的包。这意味着可以向/从缓冲区写入/读取数据,该缓冲区使用通道进一步处理。在这里,缓冲区充当数据的容器,因为它保存原始数据类型并提供其他 NIO 包的概述。这些缓冲区可以被填充、排空、翻转、倒带等。
-
通道:通道是新的原始 I/O抽象。通道有点像用于与外部世界通信的流。从通道中,我们可以将数据读入缓冲区或从缓冲区写入。Java NIO 执行非阻塞 IO 操作,通道可用于这些 IO 操作。与不同实体的连接由能够执行非阻塞 I/O 操作的各种通道表示。通道用作媒介或网关。下图说明了通道和缓冲区的交互:
-
选择器:选择器可用于非阻塞 I/O 操作。选择器是一个对象,它监视事件的多个通道。由于 Java NIO 执行非阻塞 IO 操作,选择器和带有可选通道的选择键定义了多路复用 IO 操作。因此,简单来说,我们可以说选择器用于选择准备进行 I/O 操作的通道。下图说明了处理通道的选择器:
Java NIO 提供了一种基于通道、缓冲区和选择器的新 I/O 模型。因此,这些模块被认为是 API 的核心。下表说明了 NIO 系统的 Java.nio 包列表以及使用它们的原因:
包裹 目的
java.nio 包 它提供了其他 NIO 包的概述。这个 NIO 系统封装了不同类型的缓冲区,这些缓冲区在整个 NIO API 中使用。
java.nio.channels 包 它支持通道和选择器,它们代表与实体的连接,实体本质上是打开 I/O 连接并选择准备好 I/O 的通道。
java.nio.channels.spi 包 它支持 java.io.channel 包的服务提供者类。
java.nio.file 包 它提供对文件的支持。
java.nio.file.spi 包 它支持 java.io.file 包的服务提供者类。
java.nio.file.attribute 包 它提供对文件属性的支持。
java.nio.charset 包 它定义了字符集并为新算法提供编码和解码操作。
java.nio.charset.spi 包 它支持 java.nio.charset 包的服务提供者类。
3, 参考链接
以上是关于Java NIO - 快速指南的主要内容,如果未能解决你的问题,请参考以下文章