Domanda

Voglio ottenere un flusso da qualche posizione arbitraria in un file esistente, ad esempio ho bisogno di leggere / scrivere da / a un file che inizia con byte 101th. E 'sicuro da usare qualcosa di simile?

final FileInputStream fin = new FileInputStream(f);
fin.skip(100);

Skip javadoc dice che talvolta può ignorare minor numero di byte quella specificata. Che cosa devo fare allora?

È stato utile?

Soluzione

Come circa la seguente:

final RandomAccessFile raf = new RandomAccessFile(f, mode);
raf.seek(100);
final FileInputStream fin = new FileInputStream(raf.getFD());
// read from fin

Altri suggerimenti

Non è possibile scrivere utilizzando un FileInputStream. è necessario utilizzare un RandomAccessFile se si vuole scrivere in posizioni arbitrarie in un file. eunfortunately, non v'è alcun modo semplice per utilizzare un RandomAccessFile come un InputStream / OutputStream (sembra @aix può avere un buon suggerimento per adattarsi a RandomAccessFile InputStream / OutputStream), ma ci sono vari adattatori esempio disponibili on-line .

Un'altra alternativa è quella di utilizzare un FileChannel. è possibile impostare la posizione del FileChannel direttamente, quindi utilizzare i metodi di utilità canali per ottenere InputStream / OutputStream adattatori sulla parte superiore del canale.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top