In Java Zeilen editieren

Hi,

eine Frage. Ich habe eine Textdatei mit gleichlangen Einträgen pro Zeile. Insgesammt 25 Zeilen sind enthalten.
Nun will ich den Inhalt einer Zeile (z.B. Zeile 12) mit einem anderen Inhalt füllen, somit den vorherigen Inhalt überschreiben.

Hat jemand dazu eine Idee? Danke schonmal.

Hallo, Maxl22.

Leider fällt mir keine Lösung ein, einzelne Zeilen zu über schreiben, aber folgende Lösung sollte das Problem auch lösen.

  1. Einen neuen String-Array anlegen (String[] sArr = new String[])

  2. Mit Fileinputstream die Datei in den Array einlesen:
    Beispiel:
    File f = new File(„PFAD_DER_DATEI“); //neuen File erzeugen
    String sInput = null;
    String sAll = „“;
    BufferedReader input = new BufferedReader( //File mit der Datei
    //verbinden
    new InputStreamReader(
    new FileInputStream(f)
    )
    );
    while ((sInput=input.readline())!=null { //Bis zum Ende auslesen
    sAll+=sInput+"\n";
    }
    input.close();
    sArr = sAll.split("\n"); //In den String-Array schreiben

3.Die 12. Zeile ersetzen (sArr[11]=„NEUE_ZEILE_12“:wink:
(zu beachten: die 12. Zeile hat im Array den Index 11, da die Indizes von Arrays bei 0 beginnen)

  1. Datei überschreiben:
    Beispiel:

_BufferedWriter output = new BufferedWriter( //File mit realer Datei
//verbinden
new OutputStreamWriter(
new FileleOutputStream(f)
)
);
f.createNewFile(); //Nicht notwendig, wenn Datei nur überschrieben
//werden soll, schadet aber nicht
for (int i=0; i

Abschließend:
Natürlich müssen die Lese- und Schreib-Operationen noch in „try-catch“-Blöcke, um Fehler abzufangen.

try {
CODE
} catch(Exception e) {
e.printStackTrace();
}

Ich hoffe, ich das hilft dir weiter!

mfg

javatar_

Für diese Aufgabe würde sich auch http://java.sun.com/javase/6/docs/api/java/io/Buffer… eignen.

Wenn Du das String[] leid bist, kannst Du auch auf http://java.sun.com/j2se/1.5.0/docs/api/java/io/Rand… zurückgreifen, und eine temporäre Datei als Zwischenspeicher für den neuen Inhalt verwenden.

Hallo javatar,

vielen Dank für die rasend schnelle Antwort. Ich habe die Lösung probiert und sie funktioniert einwandfrei. Super, wieder was dazugelernt.

Viele Grüße
Maxl22

Hallo Carsten,

auch Dir vielen Dank für die Hinweise und die Links.

Viele Grüße

Maxl22