val folder = TemporaryFolder()
folder.create()
val file = folder.newFile("test.dat")
// 创建一个20字节容量的MappedByteBuffer
val buffer = RandomAccessFile(file,"rw")
.channel.map(FileChannel.MapMode.READ_WRITE,0,20)
val lv = 0x1122334455667788L
val vl = 0x1020304050607080L
buffer.putLong(lv) // 存储第一个long
buffer.putLong(vl) // 存储第二个long
buffer.force() // 将数据存储到磁盘
Assert.assertEquals(0x11.toByte(),buffer.get(0)) // 读取第一个字节
Assert.assertEquals(0x3344.toShort(),buffer.getShort(2)) // 读取一个short
Assert.assertEquals(0x10.toByte(),buffer.get(8)) // 读取第二个long的第一个字节
Assert.assertEquals(0x3040.toShort(),buffer.getShort(10)) // 读取第二个long的一个short
从上面的测试代码可以看出MappedByteBuffer存储long时,从long的最高位字节开始存储的,这和我们的书写数字的很类似。所以在操作MappedByteBuffer时要注意这一点。