1

是否有一种编程方式来实现满足以下条件的“isFileMapped”方法:

 ByteBuffer aa = ByteBuffer.allocateDirect(12);
 assertFalse(isFileMapped(aa));
 FileChannel fc = new RandomAccessFile(File.createTempFile("mmap", "test"), "rw").getChannel();
 ByteBuffer bb = fc.map(FileChannel.MapMode.READ_WRITE, 0, 10);
 assertTrue(isFileMapped(bb));
 fc.close();
 // and of course:
 assertFalse(isFileMapped(ByteBuffer.allocate(12)));

这两个实例都是 MappedByteBuffer 类型并且是直接的。

4

1 回答 1

1

使用MappedByteBuffer.isLoaded(). 对于真正映射的缓冲区,它返回 true 或 false,对于返回的缓冲区ByteBuffer.allocateDirect(),它抛出 UnsupportedOperationException。

但我不确定它在参与 I/O 操作后是否还会抛出 UnsupportedOperationException。

于 2012-06-17T17:26:06.210 回答