Warum Random int verwenden als Offset
-
18-09-2019 - |
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?
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