Package java.nio
NIO API的核心抽象包括:
-
缓冲区,它们是数据的容器;
-
字符集及其相关的解码器和编码器,
它们在字节和Unicode字符之间进行转换; -
通道的各种类型,代表着能够执行I/O操作的实体的连接;以及
-
选择器和选择键,它们与可选择通道一起定义了一个多路复用的、非阻塞的I/O设施。
java.nio
包定义了缓冲区类,这些类在整个NIO API中使用。字符集API定义在java.nio.charset
包中,通道和选择器API定义在java.nio.channels
包中,文件和路径API定义在java.nio.file
包中。每个子包都有自己的服务提供者接口(SPI)子包,其中的内容可用于扩展平台的默认实现或构建替代实现。
缓冲区 | 描述 |
---|---|
缓冲区 |
位置、限制和容量;清除、翻转、倒带和标记/重置 |
字节缓冲区 |
获取/放置、压缩、视图;分配、包装 |
映射字节缓冲区 |
映射到文件的字节缓冲区 |
字符缓冲区 |
获取/放置、压缩;分配、包装 |
双精度浮点数缓冲区 |
获取/放置、压缩;分配、包装 |
单精度浮点数缓冲区 |
获取/放置、压缩;分配、包装 |
整数缓冲区 |
获取/放置、压缩;分配、包装 |
长整数缓冲区 |
获取/放置、压缩;分配、包装 |
短整数缓冲区 |
获取/放置、压缩;分配、包装 |
字节顺序 |
字节顺序的类型安全枚举 |
一个缓冲区是特定原始类型的固定数据量的容器。除了其内容外,缓冲区还有一个位置,即下一个要读取或写入的元素的索引,以及一个限制,即不应读取或写入的第一个元素的索引。基本的缓冲区
类定义了这些属性,以及用于清除、翻转、倒带、标记当前位置以及重置位置到先前标记的方法。
每个非布尔原始类型都有一个缓冲区类。每个类定义了一组用于将数据从缓冲区移出和移入的获取和放置方法,用于压缩、复制和切片缓冲区的方法,以及用于分配新缓冲区以及将现有数组包装成缓冲区的静态方法。
字节缓冲区的特点在于它们可以用作I/O操作的源和目标。它们还支持其他缓冲区类中找不到的几个特性:
-
字节缓冲区可以被分配为一个 直接缓冲区,这种情况下Java虚拟机将尽最大努力直接在其上执行本机I/O操作。
-
字节缓冲区可以通过
映射
文件的一个区域直接映射到内存中,这种情况下,映射字节缓冲区
类中定义的一些额外的与文件相关的操作是可用的。
除非另有说明,在此包中的任何类或接口的构造函数或方法中传递null
参数将导致抛出NullPointerException
。
- 自版本:
- 1.4
-
ClassDescription特定原始类型数据的容器。在相对put操作达到目标缓冲区的限制时抛出的未经检查的异常。在相对get操作达到源缓冲区的限制时抛出的未经检查的异常。一个字节缓冲区。字节顺序的类型安全枚举。一个字符缓冲区。一个双精度浮点数缓冲区。一个单精度浮点数缓冲区。一个整数缓冲区。尝试在未定义标记的缓冲区上重置缓冲区时抛出的未经检查的异常。一个长整数缓冲区。一个直接字节缓冲区,其内容是文件的内存映射区域。当在只读缓冲区上调用内容突变方法(如
put
或compact
)时抛出的未经检查的异常。一个短整数缓冲区。