我有一种情况,我继续阅读下面的ByteBuffer .
ByteBuffer buffer = MappedByteBuffer.allocateDirect(Constants.BUFFER_SIZE);
但是当读数到达边界时(当读取的剩余字节小于BUFFER_SIZE时),我只需要读取 boundaryLimit - FileChannel's current position
.
意味着边界限制是x,当前位置是y,那么我需要从 y
读取字节,直到 x
,而不是超出该范围 .
我该如何实现这一目标?
我不想用新容量创建另一个实例 .
2 回答
它误导了我在这里使用MappedByteBuffer . 你应该用
如果您读取的字节数不足,则不成问题
编辑:从文件中的随机位置读取 .
除了使用其他API(如FileInputStream,RandomAccessFile或MappedByteBuffer)之外,没有其他答案 . 如果你必须使用ByteBuffer,你必须在它发生后自己检测过度读取,并相应地进行补偿 .