Kopierte Datei soll alte ersetzen.

jw9494

Mitglied
Moin,
ich schreibe gerade ein Programm, dass eine Datei kopiert und Textabschnitte überbearbeitet. Allerdings soll die neue (kopierte) Datei genauso heißen wie die alte und diese ersetzten.
Wenn ich dem BufferedWriter genau den gleichen Pfad übergebe wird das allerdings nichts.

BufferedReader inFile = new BufferedReader (new FileReader ("d:\Profiles\peter\Desktop\Sonstiges\beispiel.html"));
BufferedWriter inFile2 = new BufferedWriter (new FileWriter ("d:\Profiles\peter\Desktop\Sonstiges\beispiel.html"));

Kann mir jemand einen Löschungsvorschlag liefern, wie ich das umsetzten kann? Bin noch blutiger Anfänger.
Liebe Grüße
 
Daten einlese, bearbeiten und neue Daten schreiben. Damit sollte es eigentlich auch mit einem BufferedWriter gehen.
 
Das funktioniert leider nur, wenn ich dem Bufferedwirter einen neuen Dateinamen gebe wie:
BufferedWriter inFile2 = new BufferedWriter (new FileWriter ("d:\Profiles\peter\Desktop\Sonstiges\beispie123l.html"));

Nehme ich den gleichen, wird die Datei im Ordner gelöscht.
Ist soweit auch kein Problem, aber kann ich denn nicht irgendwie beispiel.html durch beispiel123l.html ersetzen?
 
Stimmt, mein Fehler.
Vielleicht mal folgender Vorschlag:
Java:
File file = new File("...");

// Dateiinhalt lesen und in einer Liste speichern
List<String> lines = Files.readAllLines(file.toPath());

// Inhalt verändern .. beispielhaft wird hier die erste Zeile verändert
lines.set(0, "Änderung..");

// Änderungen in Datei schreiben
Files.write(file.toPath(), String.join(System.lineSeperator(), lines).getBytes());

Du könntest natürlich auch den "langen" Weg gehen über:
Neue Datei erstellen (mit anderem Namen), alte Datei löschen und die "neue" Datei umbenennen.
 
Ich habe aber bereits eine riesen Schleife die direkt in die neue Datei schreibt 🙁
Siehe:
Java:
   while (aktline!= null)
         {
        
            if (aktline.contains("Beispielzeile soll gelöscht werden"))
           
            {
               aktline="";
               inFile2.write(aktline);
               aktline = inFile.readLine();
              }
...

Gibt es noch eine andere Möglichkeit?
 
Du kannst das schreiben ja aber auch einfach aus der Schleife rausnehmen und in eine neue packen. Da musst du dann so vorgehen wie es @Thallius beschrieben hat.
Oder du erstellst eine neue Datei (mit einem anderen Namen), schreibst in dort den neuen Content rein, löschst danach die alte und nennst die neue um...
 

Neue Themen


Zurück
Oben