内存映射文件允许我们创建和修改那些因为太大而不能放入内存的文件。有了内存映射文件,我们就可以假定整个文件都放到内存中,而且可以完全把他当作非常大的数组来访问。这种方法极大的简化了用于修改文件的代码
1.类 MappedByteBuffer
1.1描述
public abstract class MappedByteBuffer
extends ByteBuffer
直接字节缓冲区,其内容是文件的内存映射区域。
映射的字节缓冲区是通过FileChannel.map
方法创建的。此类用特定于内存映射文件区域的操作扩展ByteBuffer
类。
映射的字节缓冲区和它所表示的文件映射关系在该缓冲区本身成为垃圾回收缓冲区之前一直保持有效。
映射的字节缓冲区的内容可以随时更改
,例如,在此程序或另一个程序更改了对应的映射文件区域的内容的情况下。这些更改是否发生(以及何时发生)与操作系统无关,因此是未指定的。
1.2与普通缓存区的区别:
全部或部分映射的字节缓冲区可能随时成为不可访问的,例如,如果我们截取映射的文件。试图访问映射的字节缓冲区的不可访问区域将不会更改缓冲区的内容,并导致在访问时或访问后的某个时刻抛出未指定的异常。因此强烈推荐采取适当的预防措施,以避免此程序或另一个同时运行的程序对映射的文件执行操作(读写文件内容除外)。
除此之外,映射的字节缓冲区的功能与普通的直接字节缓冲区完全相同。