跟mmap不同的是,这个可以改变文件的大小

  1. public static void map() throws IOException{ 
  2.         RandomAccessFile fin = new RandomAccessFile("e:/map.txt""rw"); 
  3.          
  4.         FileChannel finc = fin.getChannel(); 
  5.         MappedByteBuffer buf = finc.map(MapMode.READ_WRITE, 020); 
  6.         //buf.put(new String("01234567890123456789").getBytes()); //写
  7.         byte[] bytes = new byte[20]; 
  8.         buf.get(bytes); 
  9.         System.out.println(new String(bytes)); 
  10.         buf.force(); 
  11.         finc.close(); 
  12.     } 

 下面是别人写的口诀:

三个方法:

a. fore();缓冲区是READ_WRITE模式下,此方法对缓冲区内容的修改强行写入文件

b. load()将缓冲区的内容载入内存,并返回该缓冲区的引用

c. isLoaded()如果缓冲区的内容在物理内存中,则返回真,否则返回假

三个特性:

调用信道的map()方法后,即可将文件的某一部分或全部映射到内存中,映射内存缓冲区是个直接缓冲区,继承自ByteBuffer,但相对于ByteBuffer,它有更多的优点:

a. 读取快

b. 写入快

c. 随时随地写入