Come è possibile cercare (modificare la posizione) di un ByteArrayInputStream
(java.io
)? È qualcosa di ovvio, ma non riesco a trovare un metodo per questo ovunque (mark
/reset
non è abbastanza, ho bisogno di impostare la posizione in qualsiasi punto del InputStream
).Ricerca di un ByteArrayInputStream utilizzando java.io
Se non può essere fatto utilizzando java.io
e devo passare a java.nio
e utilizzare un ByteBuffer
, come posso ottenere qualcosa di simile a un DataOutputStream
avvolgendo un ByteArrayOutputStream
utilizzando java.nio
? Non sto trovando alcun tipo di buffer auto-ridimensionabile.
MODIFICA: Ho trovato un modo per ottenere ciò che sto tentando di fare, ma è un po 'caotico. ImageIO.createImageInputStream
crea un ImageInputStream
, che è esattamente quello che voglio (può cercare e leggere le primitive). Tuttavia, l'utilizzo di un ByteArrayInputStream
restituisce un FileCacheImageInputStream
, che in pratica significa che copia l'array di byte in un file solo per cercare.
Questa è la prima volta che cerco di utilizzare le classi di I/O Java ed è stato completamente negativo. E 'mancano alcune caratteristiche fondamentali (IMO), e ha un sacco di modi per fare la stessa cosa (per esempio per leggere le primitive da un file è possibile utilizzare RandomAccessFile
, DataInputStream
+ FileInputStream
, FileImageInputStream
, FileChannel
+ ByteBuffer
, e forse anche di più).
si vede qualche problema con l'uso di 'seek'? –
@Vilay Mathew: Che metodo 'seek'? Non vedo nessuno su ByteArrayInputStream. – asdfghjkl
I/o file in java è un enorme pasticcio. Lo insegno agli studenti del primo anno e cerco di renderlo semplice, ma è sempre un punto di confusione. – Fixee