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