gpt4 book ai didi

Java:找出通过channel.map和allocateDirect创建的ByteBuffer的区别

转载 作者:太空宇宙 更新时间:2023-11-04 08:11:46 27 4
gpt4 key购买 nike

是否有一种编程方式来实现满足以下条件的“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 类型并且是直接的。

最佳答案

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

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

关于Java:找出通过channel.map和allocateDirect创建的ByteBuffer的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11072802/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com