Zum Inhalt springen

Datei kopieren und dabei bestimmte Zeilen ersetzen


Jin84

Empfohlene Beiträge

Hallo,

ich möchte per Knopfdruck eine Datei kopieren und dabei bestimmte Zeilen ersetzen, jedoch klappts nicht so, wie ich mir das vorstelle, es passiert in Richtung ersetzen nämlich gar nichts (das kopieren klappt einwandfrei).

Ich erstelle einen BufferedReader & -Writer mit FileReader & -Writer, erstelle die übliche Schleife zum auslesen jeder Zeile und nutze dann die Methode replaceAll, hier mal der Quelltext in verkürzter Form:

while ((zeilen = in.readLine()) != null) { 

		zeilen.replaceAll("\\*Nikolaus\\*", "Weihnachtsmann");

		out.write(zeilen);

		out.newLine();

}

Dabei sollen alle Zeilen, in denen das Wort Nikolaus vorkommt durch das einzelne Wort Weihnachtsmann ersetzt werden. Klappt aber nicht so ganz, wär also super wenn sich Hilfe findet :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Jup, hat ich schon probiert bevor ich mich Hilfe suchend an die Profis gewandt hab.

Dann liegt es wohl an was anderem.

Also ich hab eine private Klasse mit der actionPerformed Methode, dort ruf ich dann je nachdem was ich in meiner JList für Dateien drin habe, eine Methode zum Kopieren von ganzen Verzeichnissen, oder eben direkt die Methode für das Kopieren einzelner Dateien auf. Letztere wird auch von der Verzeichniskopiermethode aufgerufen, da dort rekursiv die Verzeichnisbäume abgearbeitet werden, so weit so gut, da das Kopieren klappt, dürfte dort noch nichts verkehrt sein, oder?

An die Copyfile Methode werden die Quelldatei (also das was in meiner JList drinsteht) sowie Zielfile übergeben, Zielfile ist die selbe Verzeichnisstruktur, zu Testzwecken erstmal in einem anderen Ordner (z.B. c:\Dezember, c:\a\Dezember).

in der CopyFile Methode heisst es dann

BufferedReader in = new BufferedReader(new FileReader(quelle));

BufferedWriter out = new BufferedWriter(new FileWriter(ziel));

String ziele;

String zeilen;

int j = dlm_Zielliste.size();

for (int i = 0; i < j; i++){

        ziele = dlm_Zielliste.getElementAt(i).toString();

	while ((zeilen = in.readLine()) != null) {

		if (quelle.getName().equals("Dezember.txt")){

			zeilen = zeilen.replaceAll("\\*Nikolaus\\*", "Weihnachtsmann");

			out.write(zeilen);

unten gehts dann noch weiter (für verschiedene Ziele verschiedene Sachen zb), aber das sollte für die eine Datei und das eine Replace ja ansich schonmal funktionieren, findet wer den Fehler?

Hab auch schon versucht das if... wegzulassen, da ich keine anderen Dateien habe, in denen Nikolaus vorkommen sollte, aber da tut sich genausowenig.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mh kann man hier nicht editieren oder bin ich grad blind?

Wie dem ich auch sei, wenn ich statt mit \\ mit \' oder \" escape, dann ersetzt er immerhin etwas, allerdings nur das Wort, ich will ja die ganze Zeile ersetzen. Das selbe passiert auch wenn ich die Sternchen gleich ganz weglasse.

stimmt vielleicht mit dem Regulären Ausdruck was nicht?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...