Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
einzelne Zeile mithilfe Steams aus Textdatei überschreiben
Die einzige Möglichkeit eine Zeile von variabler Länge in einer Textdatei zu ändern
ist die die Originaldatei zu lesen und den Inhalt mit der geänderten Zeile in eine temporäre Datei zu schreiben.
Dann löschen wir die Originaldatei und benennen die temporäre Datei um in den Originalnamen.
In diesem Beispiel musst du 3 Argumente angeben: Die Datei, den Zeilenschlüssel und den neuen Zeileninhalt:
Code:
public void replaceLineInFile(File inFile, String lineKey,
String lineToBeReplaced) throws IOException {
// temp file:
File outFile = File.createTempFile("temp", null, inFile.getParentFile());
// input:
FileInputStream fis = new FileInputStream(inFile);
BufferedReader in = new BufferedReader
(new InputStreamReader(fis));
// output:
FileOutputStream fos = new FileOutputStream(outFile);
PrintWriter out = new PrintWriter(fos);
String thisLine = "";
while ((thisLine = in.readLine()) != null) {
if(thisLine.startsWith(lineKey))
out.println(lineToBeReplaced);
else
out.println(thisLine);
}
out.flush();
out.close();
in.close();
inFile.delete();
outFile.renameTo(inFile);
}
jetzt klappt es schon fast.
er erstellt mir zwar jetzt eine temp datei, ändert aber nicht die eigentliche userdatei. eigentlich sollte ja dann die temp datei in die userdatei unbenannt werden.
woran kann das liegen?
das ist mein quelltext.
als parameter übergeb ich als infile: "C:/webapps/Amore/src/java/beans/userdaten.txt"
ich mein es kommt ja auch keine fehlermeldung oder so.
er führt alles aus
nur wenn ich am ende in meine ordnerstruktur reinschaue, sehe ich dass die datei userdaten.txt nicht verändert wurde und nur eine neue temp datei erstellt wurde. wenn ich diese dann manuell umändern würde in eine txt datei, würd alles stimmen, mit geändertem pw
aber die userdaten datei besteht ja schon auf meiner festplatte.
kann es damit zusammenhängen dass ich im quellcode sage
File a=new File(C:/....userdaten.txt)
outFile.delete() geht.
also wenn ich das eingebe dann is die erstellte temp datei nicht mehr wie sonst vorhanden! er löscht mir nur die scheiss userdaten.txt nicht, die schon vor programmaufruf besteht...