Frage

Ich möchte einen Stream aus einer willkürlichen Position in einer vorhandenen Datei erhalten, beispielsweise muss ich von/zu einer Datei lesen/schreiben, die mit dem 101. Byte beginnt. Ist es sicher, so etwas zu verwenden?

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

Javadoc überspringen sagt, dass es manchmal eine geringere Anzahl von Bytes als angegeben überspringen kann. Was sollte ich dann tun?

War es hilfreich?

Lösung

Wie wäre es mit Folgendem:

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

Andere Tipps

Sie können nicht mit einem DateiInputStream schreiben. Sie müssen eine RandomAccess -Datei verwenden, wenn Sie an willkürliche Stellen in einer Datei schreiben möchten. Eunfortunen gibt es keine einfache Möglichkeit, eine RandomAccessfile als Inputstream/Ausgangsstream zu verwenden (Sieht so aus, als hätte @AIX einen guten Vorschlag für die Anpassung von RandomAccessfile an InputStream/OutputStream), aber es gibt verschiedene Beispieladapter online.

Eine andere Alternative besteht darin, ein Filechannel zu verwenden. Sie können die Position des Filechannel direkt einstellen und dann die Utility -Methoden der Kanäle über den Kanal erhalten.

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