(1).MappedByteBuffer介绍
NIO提供了MappedByteBuffer,可以让文件直接在内存(堆外内存)中进行修改,而如何同步到文件则是由NIO来完成
(2).MappedByteBuffer类结构图
(3). MappedByteBuffer案例
import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.util.concurrent.CountDownLatch;
/**
* 1. MappedByteBuffer 可以文件直接在内存修改(堆外内存),操作系统不需要拷贝一次.
*/
public class MappedByteBufferTest {
public static void main(String[] args) throws Exception {
RandomAccessFile file =
new RandomAccessFile("/Users/lixin/Downloads/尚硅谷Netty学习资料/代码/NettyPro/target/file01.txt","rw");
FileChannel channel = file.getChannel();
// MapMode : 使用的模式,可选值(PRIVATE/READ_ONLY/READ_WRITE)
// position : 可以直接修改的起始位置
// size : 最多可映射到内存的大小.
// 即可以修改的范围是position~size之间
MappedByteBuffer mappedByteBuffer = channel.map(FileChannel.MapMode.READ_WRITE,0,5);
mappedByteBuffer.putChar(0,'H');
file.close();
}
}