Я продолжаю сталкиваться со случаем, когда мне нужна какая-то структура, скажем, размера буфера 4096, и я могу
- записать байты в
- читать байты из него
- сбросить чтение обратно к предыдущему чтению
- САМОЕ ВАЖНОЕ, не нужно иметь дело с копированием, так как окна данных приближаются к концу массива байтов !!! (Это очень похоже на круговой буфер, в основном с обертыванием или чем-то еще)
ByteBuffer кажется такой же сердечной болью, как byte[], когда вы пишете в него и читаете из него на обоих из них, начало массива начинает пустеть. Я почти просто хочу структуру списка или что-то в этом роде... Я просто хочу, чтобы все это управлялось для меня (или мне, возможно, придется написать свою собственную структуру). Я думаю, что какой-то тип InputStream был бы хорош с пометкой и сбросом, чтобы я мог пометить, прежде чем читать, а затем сбросить, если в буфере пока недостаточно данных.
Это чрезвычайно полезно почти во всех асинхронных программах, где поступают данные, и у вас может быть достаточно данных для анализа или недостаточно для анализа, и вы заполняете буфер, пытаетесь прочитать и проанализировать, и вам нужно сбросить, пока у вас не будет больше данных.
ByteBuffer
кажется совершенно правильным для этого, иByteBuffer.compact()
действительно то, что вы хотите использовать, когда хотите переместить оставшийся буфер обратно в начало. - person Louis Wasserman   schedule 09.04.2013