Как я могу записать в байтовый буфер на полпути в Java? - PullRequest
0 голосов
/ 08 марта 2012

Предположим, что каждый раз буфер входного потока считывает 1000 байтов. Есть некоторые начальные знаки и название видео в начале буфера, перед фактическим видеоконтентом, например, 100 байт. Я не хочу записывать их в буфер результатов. Поэтому в первый раз напишите 101-999 в буфер. И второй раз надеюсь написать 1000-1999. В настоящее время он снова записывает 0-999, и результирующее видео имеет 900 дополнительных байтов перед собственно видео.

Есть ли способ записи в буфер, пропускающий первую длину буфера? Спасибо!

Ответы [ 2 ]

5 голосов
/ 21 декабря 2012

Я использую этот код для пропуска байтов из ByteBuffer:

import java.nio.ByteBuffer;

public class Utility {
  public static void skip(ByteBuffer bb, int skip) {
    bb.position( bb.position() + skip);
  }
}
3 голосов
/ 08 марта 2012

София, вам действительно нужно включить пример кода, чтобы люди могли помочь, но я вижу из ваших тегов, что вы, вероятно, спрашиваете о ByteBuffer NIO.

Что вы хотите сделать, это пропустить контент, который вы не делаетеПри использовании метода ByteBuffer.position (int) - нет никакого волшебства в значении ByteBuffer, это резервное хранилище данных (либо byte [], либо прямая ссылка на память для ОС) исерия указателей int, которые ссылаются на концептуальные позиции в буфере (начало, конец, лимит и т. д.) - вы просто хотите убедиться, что «пропускаете» ненужные байты, что можно сделать, переместив позициюза его пределами, поэтому следующая операция по записи всего буфера начнется с позиции и перейдет к пределу.

...