Package java.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)子包,其内容可用于扩展平台的默认实现或构建替代实现。
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
类定义了这些属性以及清除 , 翻转和倒带的方法 ,用于标记当前位置以及将位置重置为先前标记。
每个非布尔基元类型都有一个缓冲类。 每个类定义了一系列get和put方法,用于将数据移出和移入缓冲区,用于压缩 , 复制和切片缓冲区的方法,以及用于分配新缓冲区以及将现有数组包装到缓冲。
字节缓冲区的区别在于它们可以用作I / O操作的源和目标。 它们还支持其他缓冲区类中没有的几个功能:
可以将字节缓冲区分配为direct缓冲区,在这种情况下,Java虚拟机将尽最大努力直接在其上执行本机I / O操作。
一个字节缓冲区可以由
mapping
直接创建一个文件区域到内存中,在这种情况下,可以使用MappedByteBuffer
类中定义的一些额外的文件相关操作。字节缓冲区提供对其内容的访问,作为任何非布尔基元类型的异构或同构序列binary data ,在big-endian或little-endian byte order中 。
除非另有说明,否则将null
参数传递给此包中任何类或接口中的构造函数或方法将导致抛出NullPointerException
。
- 从以下版本开始:
- 1.4
-
类摘要 类 描述 Buffer 用于特定基元类型的数据的容器。ByteBuffer 一个字节缓冲区。ByteOrder 字节顺序的类型安全枚举。CharBuffer 一个char缓冲区。DoubleBuffer 双缓冲。FloatBuffer 浮动缓冲区。IntBuffer 一个int缓冲区。LongBuffer 一个长缓冲区。MappedByteBuffer 直接字节缓冲区,其内容是文件的内存映射区域。ShortBuffer 一个短缓冲区。 -
异常摘要 异常 描述 BufferOverflowException 当相对 put操作达到目标缓冲区的限制时,抛出未经检查的异常。BufferUnderflowException 当相对 get操作达到源缓冲区的限制时,抛出未经检查的异常。InvalidMarkException 当未定义标记时尝试重置缓冲区时抛出未经检查的异常。ReadOnlyBufferException 在只读缓冲区上调用内容变异方法(如put
或compact
)时抛出的未经检查的异常。