java.nio

特性:

1,字符集编码器和解码器

2,非阻塞的IO 

3,内存映射文件

4,文件加锁机制


内存映射相关:

虚拟内存机制的利用, 文件通道(channel),通道是用于磁盘文件的一种抽象,它使我们可以访问诸如内存映射、文件加锁机制以及 文件间快速数据传递等操作系统特性。

FileChannel的map方法可以返回一个MappedByteBuffer (继承自ByteBuffer), 可以指定区域与模式:

FileChannel.MapMode.READ_ONLY:只读的

 FileChannel.MapMode.READ_WRITE: 对映射区的修改会在某个时刻写回文件,如果多个程序同时映射该文件,其行为依赖操作系统

FileChannel.MapMode.PRIVATE:缓冲区可写,但是不会影响到文件

使用nio文件映射需要的类:

java.nio.Buffer

java.nio.ByteBuffer

java.nio.MappedByteBuffer

java.nio.FileChannel,  文件通道可以通过FileInput/OutputStream、RandomAccessFile得到。

ByteBuffer可以检查缓冲区是否已满,查看当前的界限(超过它继续访问没有意义),还可以想DataInput、DataOutput一样处理二进制数据,也支持随机访问。相应的,处理文本数据可以使用java.nio.CharBuffer


文件锁:

可以使用FileChannel的lock 、tryLock 、release 方法使用锁,可以给lock传递参数,指定锁定范围,以及是独占锁还是共享锁(有些系统不支持共享锁,因此可能得到仍是独占锁)




你可能感兴趣的:(java.nio)