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