您的位置:首页 > 编程语言 > Java开发

Java中的NIO

2016-02-25 20:40 423 查看
NIO API的集中抽象为:

l 缓冲区, 它们是数据容器;

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
' '
FloatBuffer
' '
IntBuffer
' '
LongBuffer
' '
ShortBuffer
' '
ByteOrder
Typesafe enumeration for byte orders
缓冲区是一个固定数据量的指定基本类型的数据容器. 除内容之外, 缓冲区还具有位置和界限, 其中位置是要读写的下一个元素的索引, 界限是第一个应该读写的元素的索引. 基本Buffer类定义了这些属性以及清除,反转和重绕方法, 用以标记当前位置, 以及将当前位置重置为前一个标记处.

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

因为字节缓冲区可以用作I/O操作的源缓冲区和目标缓冲区, 所以可以对它们加以区分. 它们还支持其他缓冲区类所没有的几个特性:

• 可以将字节缓冲区分配为一个直接缓冲区, 在这种情况下, Java虚拟机将最大限度地直接在缓冲区上执行本机I/O操作.

• 可以通过mapping将文件区域直接包装到内存中来创建字节缓冲区, 在这种情况下, 可以使用MappedByteBuffer类中定义的几个其他文件相关的操作.

• 字节缓冲区提供了对其内容的访问(其内容作为任何非布尔基本类型的异类或同类二进制数据序列), 访问要么是以big-endian字节顺序进行, 要么是以little-endian字节顺序进行.

l 字符集, 及其相关解码器和编码器,它们在字节和Unicode字符之间进行转换;

l 各种类型的通道, 它们表示能够执行IO操作的实体的连接; 以及选择器和选择键, 它们与可选择信道一起定义了多路的,无阻塞的I/O设施.

Feb 25, 2016
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: