Как я могу найти (изменить положение) ByteArrayInputStream
(java.io
)? Это настолько очевидно, но я не могу найти способ для этого где-нибудь (mark
/reset
недостаточно, мне нужно установить положение в любом месте на InputStream
).
Если это невозможно сделать с помощью java.io
, и я должен переключиться на java.nio
и использовать ByteBuffer
, как я могу получить что-то похожее на DataOutputStream
обертку ByteArrayOutputStream
с помощью java.nio
? Я не нахожу какой-либо буфер с автоматическим изменением размера.
EDIT: Я нашел один способ добиться того, что я пытаюсь сделать, но это немного грязно. ImageIO.createImageInputStream
создает ImageInputStream
, что именно то, что я хочу (можно искать и читать примитивы). Однако использование ByteArrayInputStream
возвращает a FileCacheImageInputStream
, что в основном означает, что он копирует массив байтов в файл только для поиска.
Это мой первый раз, когда я пытаюсь использовать классы Java IO, и он был полностью отрицательным. В нем отсутствуют некоторые основные функции (IMO), и у него есть много способов сделать то же самое (например, для чтения примитивов из файла вы можете использовать RandomAccessFile
, DataInputStream
+ FileInputStream
, FileImageInputStream
, FileChannel
+ ByteBuffer
и, возможно, даже больше).