Domanda

Le scrivo qualche implementazione di test di accesso ai dati e ho bisogno di accesso casuale ai file di contenuto. Ecco il codice:

RandomAccessFile randomAccessFile = new RandomAccessFile(file, "rwd");
final byte b[] = IOUtils.toByteArray(source);
randomAccessFile.write(b, (int) offset, size);

dove compensare è di tipo lungo. Perché non RandomAccessFile fornire il metodo:

public void write(byte b[], long off, int len)

Come ignorare questo problema?

È stato utile?

Soluzione

Credo che si sta cercando per il metodo seek.

L'offset in write è un offset nella matrice. Gli array hanno offset int. Ci sono state le proposte di "lunghi array", ma sono stati questi implementato, saresti ancora bisogno di un sovraccarico.

I file mappate in NIO hanno un problema in quanto il MappedByteBuffer.position equivalente per qualche motivo usa solo int. Vedere CR 6.347.833 (9 voti).

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