Hallo!
Ich muss in einem vorhandenen Textdokument 2 bestimmte Zeilen überschreiben.
Ich habe aber keine Ahnung wie ich das machen soll.
Gibt es vielleicht irgendeine Methode dazu?
Hmm ich glaub das geht genauseo.
Ich würds eben vil erst in ne TextArea laden, dann ersetzen und wieder schreiben is halt men zwischenschritt...
Denn ohne dass der die geladen hat kann er sie auch net überschreiben..
Mfg
Ich gehe mal davon aus, dass eine txt-Datei (oder äquivalent) vorliegt.
Dann brauchst du „nur“ über einen BufferedReader die Zeilen vor den zu ändernen Zeilen lesen und in eine neue Datei schreiben, bei den neuen Zeilen entsprechend diese senden, die nächsten zwei Zeilen des BufferedReaders überspringen und den Rest in die neue Datei schreiben. Anschließend löschst du die alte Datei und benennst die neue um.
Das ist ein Weg, es gibt auch andere Möglichkeiten!
Hmm schneller ist mein Weg...
Da ist net so viel hin und her.
Natürlich ists unprofessionell aber es geht...
1.) Die Textdatei in ein unsichtbares JTextArea laden
2.) DIe Zeilen erstzen
3.) Neu abspeichern
schneller ist dein code ganz sicher nicht ;-)
Swing laden: langsam
text aus datei in Document laden: noch langsamer
den text in einem PlainDocument so ersetzen: zZzZzZzZz
schon klar was du meinst aber einfach lesen und sofort wieder schreiben ist da schon schneller :bae:
naja icj meinte die code-länge...Und ich denke kaum dass man da wirklich (in nem kleinen Programm) nen unterschied in der programmgeschwindigkeit festelen wird....
@geschwindigkeit: och...
@code länge: viel kürzer kann das auch nicht werden, du musst schileßlich dafür auch erstmal die richtigen positionen ausrechnen die du erstezne willst etc etc...
Also das passt ganz gut dazu: ich will per buttonklick ne neue zeile zu ner textdatei hinzufügen.
Nur wie?
Der ersetzt immer den kompletten text;-(
Gibbes da nen bestimmten code?
Denn ich glaub dafür hab ich mal einen gesehen ....
Findd ihn aber net:-(
Es wäre folgende Lösung möglich: Als erstes schließt du den alten Stream: mit : streamname.close();
try {
outputStream = new PrintWriter(new FileOutputStream("data.txt"));
}catch(FileNotFoundException e){
JOptionPane.showMessageDialog(null, "Die Datei kann aus unergründlichen Gründen nciht gespeichet werden.\nBitte versuchen sie noch ein mal.");
System.exit(0);
}
schreibts du ^^. Dabei musst du data.txt durch den Namen deiner Datei ersetzen. Willst du zufor etwas davon auslesen, musst du erstmall mit dem BufferReader die Datei öffen BufferedReader inputStream = new BufferedReader(new FileReader("data.txt")); das Nötige auslesen und dann erst einen neuen Stream für zum Schreiben öffenten und vielleicht auf schnellschreiben stellen, dass würde dir einiges ersparen. Das dazugehörige Befehl wäre streamname.flush();