У меня есть двоичный файл, который содержит ключи и после каждого ключа, там изображение, связанное с ним. Я хочу спрыгнуть из различных ключей, но не мог найти метод, который изменяет индексное расположение во входной поток. Я видел mark()
метод, но это не вскакивает на различные места.
У кого-либо есть какая-либо идея, как сделать это?
Есть метод 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.