java nio
jdk 1.4 java.nio 引入新的Java i/o类库,目的在于提高速度
旧的io也已经使用nio重新实现过,以便充分利用这种速度提高
速度提高来自: 通道和缓冲器,更接近与系统io执行方式
唯一直接和通道交互的缓冲器是ByteBuffer
旧io类库中有三个类被修改用以产生FileChannel,
分别为,FileInputStream,FileOutputStream,RandomAccessFile
这些是字节操作流,与底层nio性质一致
java.nio.channels.Channels类提供实用方法用以产生Reader和Writer类
Java NIO 由以下几个核心部分组成:
-
Channels
-
Buffers
-
Selectors
Channel 和 Buffer
基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中
JAVA NIO中的一些主要Channel的实现:
-
FileChannel
-
DatagramChannel
-
SocketChannel
-
ServerSocketChannel
Java NIO里关键的Buffer实现:
-
ByteBuffer
-
CharBuffer
-
DoubleBuffer
-
FloatBuffer
-
IntBuffer
-
LongBuffer
-
ShortBuffer
buffer基本操作
-
写入数据到Buffer
-
调用
flip()方法 -
从Buffer中读取数据
-
调用
clear()方法或者compact()方法 -
常用方法
-
1 /** 2 返回此缓冲区的容量。 3 **/ 4 public final int capacity() 5 /** 6 public final int limit() 7 返回此缓冲区的限制 8 **/ 9 public final int limit() 10 /** 11 返回此缓冲区的位置。 12 13 **/ 14 public final int position() 15 /** 16 参数: 17 newLimit-新的限值;必须为非负且不大于此缓冲区的容量 18 **/ 19 public final Buffer position(int newPosition) 20 21 /** 22 重设缓冲区,在写入之前调用,改变缓冲的指针 23 **/ 24 public final Buffer flip() 25 26 /** 27 恢复缓冲区中的标记位置 28 **/ 29 public final Buffer reset() 30 31 /** 32 判断当前位置和限制之间是否有内容 33 **/ 34 public final boolean hasRemaining() 35

浙公网安备 33010602011771号