изменение индексного расположения в InputStream

У меня есть двоичный файл, который содержит ключи и после каждого ключа, там изображение, связанное с ним. Я хочу спрыгнуть из различных ключей, но не мог найти метод, который изменяет индексное расположение во входной поток. Я видел mark() метод, но это не вскакивает на различные места.

У кого-либо есть какая-либо идея, как сделать это?

7
задан Jon Skeet 13 August 2010 в 07:54
поделиться

1 ответ

Есть метод long skip (long n) , который вы можете использовать:

пропускает и отбрасывает n байтов данных из этого входного потока. Метод пропуска может по разным причинам закончиться пропуском некоторого меньшего количества байтов, возможно 0 . Это может быть результатом любого из ряда условий; достижение конца файла до того, как n байтов были пропущены, - это только одна возможность. Возвращается фактическое количество пропущенных байтов. Если n отрицательное, байты не пропускаются.

Как указано в документации, вам не гарантируется, что n байтов будут пропущены, поэтому всегда проверяйте возвращаемое значение дважды. Обратите внимание, что это не позволяет вам «переходить назад», но если это markSupported () , вы можете сначала reset () и затем пропустить перейдем к более ранней позиции, если необходимо.


Другие параметры

Вы также можете использовать java.io.RandomAccessFile , который, как следует из названия, разрешает произвольный доступ с помощью метода seek (long pos) .

Вы упомянули изображения, поэтому, если вы используете Java Advanced Imaging , другой возможный вариант - com.sun.media.jai.codec.FileSeekableStream , который является SeekableStream , который принимает входные данные из файла или RandomAccessFile . Обратите внимание, что этот класс не является частью JAI API. Он может быть удален или изменен в будущих выпусках JAI.

8
ответ дан 7 December 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: