Как я могу найти (изменить положение) 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
и, возможно, даже больше).