javaNio 通道和缓冲区

Posted 盗帅_tim

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javaNio 通道和缓冲区相关的知识,希望对你有一定的参考价值。

/**
 * 大多数操作系统可以利用虚拟内存将文件或文件一部分映射到内存中,然后这个文件就可以被当做内存数组一样被访问;避免底层IO的开销<p>
 * 【通道】是一种用于磁盘文件的一种抽象;<br>
 * 它使我们可以访问诸如内存映射,文件加锁机制以及文件间快速数据传递等特性;
*@date:2018年7月5日
*@author:zhangfs


*/
public class GetChannel {

    private static final int BSIZE=1024;
    public static void main(String[] args) throws IOException {
        
        //
        FileChannel fileChannel=new FileOutputStream("data.txt").getChannel();
        fileChannel.write( ByteBuffer.wrap("hello".getBytes()));//warp将已存在的数组包装到butebuffer中;
        fileChannel.close();
        //可读可写
        fileChannel=new RandomAccessFile("data.txt", "rw").getChannel();
        fileChannel.position(fileChannel.size());//移动到filechannel最后
        fileChannel.write(ByteBuffer.wrap(" world".getBytes()));
        fileChannel.close();
        //
        fileChannel=new FileInputStream("data.txt").getChannel();
        ByteBuffer buffer=ByteBuffer.allocate(BSIZE);
        fileChannel.read(buffer);
        buffer.flip();//让别人读取字符的准备;有利于获取最大速度
        while(buffer.hasRemaining()) {
            printnb((char)buffer.get());
        }
        
    }
}

 

以上是关于javaNio 通道和缓冲区的主要内容,如果未能解决你的问题,请参考以下文章

JavaNio之ByteBuffer

Java NIO 系列教程

Java NIO

JAVA:NIO初步了解

NIO编程

java nio