¿Cómo puedo buscar (cambiar la posición) de un ByteArrayInputStream
(java.io
)? Es algo tan obvio, pero parece que no puedo encontrar un método para esto en cualquier lugar (mark
/reset
no es suficiente, necesito establecer la posición en cualquier lugar en el InputStream
).Buscando un ByteArrayInputStream usando java.io
Si no se puede hacer usando java.io
y tengo que cambiar a java.nio
y utilizar un ByteBuffer
, ¿cómo puedo obtener algo similar a un DataOutputStream
envolver una ByteArrayOutputStream
usando java.nio
? No encuentro ningún tipo de búfer de tamaño variable.
EDIT: He encontrado una manera de lograr lo que estoy intentando hacer, pero es un poco complicado. ImageIO.createImageInputStream
crea un ImageInputStream
, que es exactamente lo que quiero (puede buscar y leer primitivas). Sin embargo, el uso de ByteArrayInputStream
devuelve FileCacheImageInputStream
, lo que básicamente significa que copia la matriz de bytes en un archivo solo para buscar.
Esta es la primera vez que trato de utilizar las clases Java IO y ha sido completamente negativo. Le faltan algunos (OMI) características fundamentales, y tiene un montón de maneras de hacer lo mismo (por ejemplo, para leer componentes a partir de un archivo que puede utilizar RandomAccessFile
, DataInputStream
+ FileInputStream
, FileImageInputStream
, FileChannel
+ ByteBuffer
, y tal vez incluso más).
¿Ve algún problema con el uso de 'seek'? –
@Vilay Mathew: ¿Qué método 'seek'? No veo ninguno en ByteArrayInputStream. – asdfghjkl
Archivo i/o en java es un gran desastre. Se lo enseño a los estudiantes de primer año y trato de hacerlo simple, pero siempre es un punto de confusión. – Fixee