跟mmap不同的是,这个可以改变文件的大小
- public static void map() throws IOException{
- RandomAccessFile fin = new RandomAccessFile("e:/map.txt", "rw");
- FileChannel finc = fin.getChannel();
- MappedByteBuffer buf = finc.map(MapMode.READ_WRITE, 0, 20);
- //buf.put(new String("01234567890123456789").getBytes()); //写
- byte[] bytes = new byte[20];
- buf.get(bytes);
- System.out.println(new String(bytes));
- buf.force();
- finc.close();
- }
下面是别人写的口诀:
三个方法:
a. fore();缓冲区是READ_WRITE模式下,此方法对缓冲区内容的修改强行写入文件
b. load()将缓冲区的内容载入内存,并返回该缓冲区的引用
c. isLoaded()如果缓冲区的内容在物理内存中,则返回真,否则返回假
三个特性:
调用信道的map()方法后,即可将文件的某一部分或全部映射到内存中,映射内存缓冲区是个直接缓冲区,继承自ByteBuffer,但相对于ByteBuffer,它有更多的优点:
a. 读取快
b. 写入快
c. 随时随地写入
本文转自 dogegg250 51CTO博客,原文链接:http://blog.51cto.com/jianshusoft/692377,如需转载请自行联系原作者