模块 java.base

包 java.nio


java.nio
定义作为数据容器的缓冲区,并提供其他 NIO 包的概述。

NIO API 的核心抽象是:

  • 缓冲器 ,它们是数据容器;

  • 字符集 及其关联解码器编码器,
    在字节和 Unicode 字符之间转换;

  • Channels 各种类型,代表连接
    能够执行 I/O 操作的实体;和

  • 选择器选择键, 连同
    可选通道定义一个 multiplexed, non-blocking
    I/O
    设施。

  • PathFiles 类一起提供对文件的访问。

java.nio 包定义了整个 NIO API 中使用的缓冲区类。字符集 API 在 java.nio.charset 包中定义,通道和选择器 API 在 java.nio.channels 包中定义,文件和路径 API 在 java.nio.file 包中定义。这些子包中的每一个都有自己的服务提供者接口 (SPI) 子包,其内容可用于扩展平台的默认实现或构建替代实现。

各种缓冲区的说明
缓冲器 Description
Buffer 位置、限制和容量;清除、翻转、倒带和标记/重置
ByteBuffer 获取/放置、压缩、视图;分配,包装
MappedByteBuffer 映射到文件的字节缓冲区
CharBuffer 获取/放置,紧凑;分配,包装
DoubleBuffer 获取/放置,紧凑;分配,包装
FloatBuffer 获取/放置,紧凑;分配,包装
IntBuffer 获取/放置,紧凑;分配,包装
LongBuffer 获取/放置,紧凑;分配,包装
ShortBuffer 获取/放置,紧凑;分配,包装
ByteOrder 字节顺序的类型安全枚举

A buffer是固定数量的特定原始类型数据的容器。除了它的内容,缓冲区还有一个position,这是要读取或写入的下一个元素的索引,以及limit,这是不应读取或写入的第一个元素的索引。 Buffer 基类定义了这些属性以及方法清理, 翻转, 和倒带, 为了标记当前位置,并且对于重置到上一个标记的位置。

每个非布尔原始类型都有一个缓冲区类。每个类定义一个家庭getput将数据移出和移入缓冲区的方法,方法压缩, 复制, 和切片缓冲区和静态方法分配一个新的缓冲区以及包装将现有数组放入缓冲区。

字节缓冲区的区别在于它们可以用作 I/O 操作的源和目标。它们还支持其他缓冲区类中没有的几个特性:

  • 字节缓冲区可以分配为 直接的 缓冲区,在这种情况下,Java 虚拟机将尽最大努力直接在其上执行本机 I/O 操作。

  • 字节缓冲区可以通过mapping 文件区域直接创建到内存中,在这种情况下,MappedByteBuffer 类中定义的一些额外的文件相关操作可用。

  • 字节缓冲区以大端或小端 字节顺序 中任何非布尔原始类型的异构或同构序列 二进制数据 提供对其内容的访问。

除非另有说明,否则将 null 参数传递给此包中任何类或接口中的构造函数或方法将导致抛出 NullPointerException

自从:
1.4
  • 描述
    特定原始类型数据的容器。
    亲戚时抛出未经检查的异常put操作达到目标缓冲区的限制。
    亲戚时抛出未经检查的异常get操作达到源缓冲区的限制。
    字节缓冲区。
    字节顺序的类型安全枚举。
    字符缓冲区。
    双缓冲区。
    浮动缓冲区。
    一个 int 缓冲区。
    未定义标记时尝试重置缓冲区时抛出未经检查的异常。
    一个长缓冲区。
    一个直接字节缓冲区,其内容是文件的内存映射区域。
    在只读缓冲区上调用诸如 putcompact 之类的内容更改方法时抛出未经检查的异常。
    一个简短的缓冲区。