Perché usa RandomAccessFile int come offset
-
18-09-2019 - |
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?
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