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)子包,其内容可以用于扩展平台的默认实现或构建替代实现。  
Buffers 描述 BufferPosition, limit, and capacity; 
clear, flip, rewind, and mark/resetByteBufferGet/put, compact, views; allocate, wrap MappedByteBufferA byte buffer mapped to a file CharBufferGet/put, compact; allocate, wrap DoubleBuffer' ' FloatBuffer' ' IntBuffer' ' LongBuffer' ' ShortBuffer' ' ByteOrderTypesafe enumeration for byte orders 
 缓冲区是用于固定数量的特定原始类型的数据的容器。 除了内容之外,缓冲区还有一个位置 ,它是要读取或写入的下一个元素的索引,以及一个限制 ,它是不应被读取或写入的第一个元素的索引。 基座Buffer类定义了这些属性以及用于清除 , 翻转和倒带的方法 ,用于标记当前位置,并将位置重置为上一个标记。 
每个非布尔基元类型都有一个缓冲区类。 每个类定义一组用于将数据移出和移入缓冲区的get和put方法,用于压缩 , 复制和分割缓冲区的方法,以及用于分配新缓冲区以及将现有阵列包装到一个缓冲区中的静态方法缓冲。
字节缓冲区的区别在于它们可以用作I / O操作的源和目标。 它们还支持在其他缓冲区中找不到的几个功能:
- 字节缓冲区可以分配为direct缓冲区,在这种情况下,Java虚拟机将尽力在其上直接执行本地I / O操作。 
- 字节缓冲区可以通过 - mapping文件的一个区域直接创建到内存中,在这种情况下,- MappedByteBuffer类中定义的一些额外的文件相关操作是可用的。
- 字节缓冲区可以访问其内容,作为任何非布尔基元类型的异或或同分序列binary data ,大码或小端byte order 。 
 除非另有说明,否则将null参数传递给此程序包中任何类或接口中的构造函数或方法将导致抛出27056945626382 。 
- 从以下版本开始:
- 1.4
-  
      类摘要 Class 描述 Buffer 用于特定原始类型的数据的容器。ByteBuffer 一个字节缓冲区。ByteOrder 字节顺序的类型安全枚举。CharBuffer 一个char缓冲区。DoubleBuffer 双缓冲。FloatBuffer 一个浮动缓冲区。IntBuffer 一个int缓冲区LongBuffer 一个长缓冲区。MappedByteBuffer 直接字节缓冲器,其内容是文件的存储器映射区域。ShortBuffer 一个短暂的缓冲。
-  
      异常摘要 异常 描述 BufferOverflowException 相对 放置操作达到目标缓冲区限制时抛出的未检查异常。BufferUnderflowException 当相对 get操作达到源缓冲区的限制时抛出未检查的异常。InvalidMarkException 当未定义其标记时尝试复位缓冲区时抛出未检查的异常。ReadOnlyBufferException 在只读缓冲区中调用诸如put或compact类的内容突变方法时抛出的未检查异常。