Класс java.nio.ByteBuffer
имеет метод ByteBuffer.array()
, однако он возвращает массив, размер которого является емкостью буфера, а не используемой емкостью. Из-за этого у меня довольно много проблем.Как получить использованный byte [] из ByteBuffer
Я заметил, что использование ByteBuffer.remaining()
дает мне количество байтов, которые в настоящее время используются буфером, поэтому в основном то, что я ищу, это способ получить byte[]
ТОЛЬКО используемых байтов. (т. е. байты, которые отображаются в ByteBuffer.remaining()
.
Я пробовал несколько разных вещей, но я, кажется, терпеть неудачу, единственное обходное решение, которое я могу придумать, чтобы создать еще один ByteBuffer
с выделенным размером оставшийся буфер, а затем записать (х) байт к нему.
Это ошибка, вы должны bb.rewind(); перед bb.get (ba); , иначе это вызовет исключение BufferUnderflowException. т. Е. Если в буфере осталось меньше байтов, чем требуется для удовлетворения запроса, то есть, если длина> остальная(), то никакие байты не передаются и исключение BufferUnderflowException –