RandomAccessFile - Wie in eine Datei einfügen?

Hallo Leute

Ich habe eine Textdatei. Nun möchte ich in diese Datei an beliebiger Position mehrere Zeichen einfügen. Wie gehe ich da vor?

Kann es sein, dass ich da immer den Umweg über eine temporäre Datei gehen muss? Die RandomAccessFile-Klasse kann ja offenbar nur Zeichen an bestimmten Positionen überschreiben bzw. am Ende anhängen. Wenn ich also an einern Position was einfügen (nicht überschreiben) will, muss ich ja den gesammten Inhalt danach nach hinten verschieben. Ist ja sehr mühsam.

Gibt es da nichts einfachers?

Nebenbei: ich verwende Java 6.

lg
Erwin

Gibt es da nichts einfachers?

Nein. Die Datei muss ja auch auf der Festplatte so angepasst werden, dass die ganzen nachfolgenden Bits nach hinten rutschen. Entweder du lässt die ganzen Daten nach hinten shiften während du die Datei durchläufst (also alte Daten puffern und jeweils nach hinten schieben) oder du erstellst einfach eine neue Datei die die eingefügten Daten korrekt enthält und ersetzt die alte dann durch diese.

Zweitere Methode dürfte in den meisten Fällen die einfachste sein. Dann brauchst du auch kein RandomAccess mehr.

Wenn die einzulesenden Dateien nicht besonders groß sind, kannst du die Dateien ja auch erstmal in den Arbeitsspeicher einlesen, dort die Daten einfügen und dann wieder in die Datei zurückschreiben. Auch dafür brauchst du dann kein RandomAccess.

hallo

habs schon befürchtet, wollte aber sicherstellen, dass ich da nicht einfach was übersehe. schade.

lg
erwin