这段代码有什么问题? :
ByteBuffer byteBuffer = ByteBuffer.allocate(4);
FileChannel channel = cacheFile.getChannel();
int bytesCount = channel.read(byteBuffer, offset);
int value = byteBuffer.getInt();
最后一行总是抛出 BufferUnderflowException。 变量 bytesCount 包含 4。
我在这里想念什么?
最佳答案
在读取之前使用绝对获取或倒回缓冲区:
// option 1
int value = byteBuffer.getInt(0);
// option 2
buffer.rewind();
int value = byteBuffer.getInt();
虽然文档不是很明显(您必须单击链接直到到达 ReadableByteChannel.read() ),但读入缓冲区会更改缓冲区的位置。
关于java - 如何使用 NIO 从文件中读取整数而不出现 BufferUnderflowException?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17243652/