Frage

Ich schreibe eine Datenzugriffstestimplementierung und ich brauche Random Access Content Datei. Hier ist der Code:

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

wo Offset lange hat eingeben. Warum nicht Randomverfahren bieten:

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

Wie dieses Problem umgehen?

War es hilfreich?

Lösung

Ich glaube, Sie für die seek Methode suchen.

Der Versatz in write wird ein in dem Array kompensiert werden. Arrays haben int Offsets. Es wurden Vorschläge für „long-arrays“, aber diese wurden umgesetzt, dann würden Sie noch eine Überlastung benötigen.

Mapped-Dateien in NIO haben das Problem, dass die äquivalent MappedByteBuffer.position aus irgendeinem Grunde nur int verwendet. Siehe CR 6347833 (9 Stimmen).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top