String in ein RandomAccessFile einfügen (bestimmte Position)

Status
Nicht offen für weitere Antworten.

Blade230

Mitglied
Hallo Forum,

ich probiere mit folgenden Code eine Zeile in eine als RandomAccessFile geöffnete *.ini Datei einzufügen.

Ich bekomme es aber nicht hin, die genaue Position zu finden.

Code:
public void setString(String sProp, String sValue)
    {
        System.out.println("Setze " + sProp + " = " + sValue);
        try{
            raf.seek(0);
            while((result = raf.readLine()) != null) {
               if(result.startsWith(sProp)) {
                   String sWrite = sProp + "=" + sValue;
                   int i = result.length();
                   raf.seek(raf.getFilePointer()-i);
                   raf.writeBytes(sWrite);                    
                }
            }
            
        }
        catch(IOException io) {
            System.out.println("Fehler: String Var");
            System.out.println(io.getMessage());
        }
    }

Das ist mein bisheriger Code.

Hier der Aufbau der ini Datei vor dem einfügen,

Code:
[Programm]
titel=J DynDNS
revision=1
major=0
minor=0
build=(17)
status=beta
firma=
pfad=


[Proxy]
pon=0
phost=
pport=
puser=
ppassword=
psavepass=1

und hier danach.

Code:
[Programm]
titel=J DynDNS
revision=1
major=0
minor=0
build=(17)
status=beta
firma=
pfpfad=C:\Projekt\DynIP\0
phost=
pport=
puser=
ppassword=
psavepass=1

Ich könnte es verstehen, wenn eine Zeile überschrieben wird, auch wenns die Falsch ist. Aber hier werden gleich 5 Zeilen bearbeitet.

Für mich zum Verständnis, wo steht der Pointer nach dem readLine()? Am ende der Zeile oder am Anfang der nächsten Zeile?

Ich hoffe, das mir jemand helfen kann.

THX
Tom
 
Du hast aber das Problem das die Datei nach hinten hin nicht länger wird wenn du das so machst wie du es jetzt machst.

In deinem Fall würd ich die Datei Zeilenweise in einem Vector speichern und dann neu schreiben.
 
Jo, du müsstest (würd ich schätzen) jedesmal das setLength erhöhen, vielleicht klappts dann!

Also immer die länge erhöhen und dann mit newLine neue Zeilen reinmachen!

Schau halt obs geht!
 
Hallo the_29,

hattest recht, ich habe es zwar geschaft, an die erste Stelle der Zeile zu kommen, wo ich etwas einfügen möchte, aber dann überschreibt er das was darunter steht und schiebt es nicht weiter.

Frage mich, wofür es dan die RandomAccessFiles gibt.
einlesen, zwischenspeichern, bearbeiten und schreiben geht doch auch einfacher.

Danke für Deine Hilfe.


Tom
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben