Java-Dateieingabe mit Rückspulen () / Zurücksetzen ()

Ich muss eine Funktion schreiben, die eine Art Eingabestream benötigt (z. B. einen InputStream oder einen FileChannel), um eine große Datei in zwei Durchgängen zu lesen: einmal, um einige Kapazitäten vorab zu berechnen, und zum anderen, um die "echte" Arbeit zu erledigen. Ich möchte nicht, dass die gesamte Datei auf einmal in den Speicher geladen wird (es sei denn, sie ist klein).

Gibt es eine geeignete Java-Klasse, die diese Funktion bietet? FileInputStream selbst unterstützt mark () / reset () nicht. BufferedInputStream funktioniert, denke ich, aber ich bin nicht sicher, ob es die gesamte Datei speichern muss, um dies zu tun.

C ist so einfach, dass Sie nur fseek (), ftell () und rewind () verwenden. :-(

Antworten auf die Frage(8)

Ihre Antwort auf die Frage