模块  java.base

Package java.nio

定义缓冲区,它是数据的容器,并提供其他NIO包的概述。

NIO API的核心抽象是:

  • Buffers ,这是数据的容器;

  • Charsets及其相关的解码器编码器
    它在字节和Unicode字符之间转换;

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

  • 选择器选择键 ,它们一起使用
    可选择的通道定义了multiplexed, non-blocking
    I/O
    设施。

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

Description of the various buffers Buffers Description Buffer Position, limit, and capacity; clear, flip, rewind, and mark/reset ByteBuffer Get/put, compact, views; allocate, wrap MappedByteBuffer A byte buffer mapped to a file CharBuffer Get/put, compact; allocate, wrap DoubleBuffer Get/put, compact; allocate, wrap FloatBuffer Get/put, compact; allocate, wrap IntBuffer Get/put, compact; allocate, wrap LongBuffer Get/put, compact; allocate, wrap ShortBuffer Get/put, compact; allocate, wrap ByteOrder Typesafe enumeration for byte orders

缓冲区是特定基元类型的固定数据量的容器。 除了内容之外,缓冲区还有一个位置 ,它是要读取或写入的下一个元素的索引,以及一个限制 ,它是不应该读取或写入的第一个元素的索引。 基础Buffer类定义了这些属性以及清除翻转倒带的方法 ,用于标记当前位置以及将位置重置为先前标记。

每个非布尔基元类型都有一个缓冲类。 每个类定义了一系列getput方法,用于将数据移出和移入缓冲区,用于压缩复制切片缓冲区的方法,以及用于分配新缓冲区以及现有数组包装到缓冲。

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

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

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

  • 字节缓冲区提供对其内容的访问,作为任何非布尔基元类型的异构或同构序列binary data ,在big-endian或little-endian byte order中

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

从以下版本开始:
1.4