本文共 693 字,大约阅读时间需要 2 分钟。
内存映射是一种读和写文件数据的方法,它可以比常规的基于流或者基于通道的I/O 快的多。内存映射文件I/O 是通过使文件中的数据出现为内存数组的内容来完成的,这其初听起来似乎不过就是将整个文件读到内存中,但是事实上并不是这样。一般来说,只有文件中实际读取或者写入的部分才会映射到内存中。如下面的示例代码:
import java.io.*;import java.nio.*;import java.nio.channels.*;/*** IO 映射缓冲区*/public class MappedBuffer { static private final int start = 0; static private final int size = 1024; static public void main( String args[] ) throws Exception { RandomAccessFile raf = new RandomAccessFile( "E://test.txt", "rw" ); FileChannel fc = raf.getChannel(); //把缓冲区跟文件系统进行一个映射关联 //只要操作缓冲区里面的内容,文件内容也会跟着改变 MappedByteBuffer mbb = fc.map( FileChannel.MapMode.READ_WRITE,start, size ); mbb.put( 0, (byte)97 ); mbb.put( 1023, (byte)122 ); raf.close(); }}
转载地址:http://dtbzb.baihongyu.com/