Jin84 Geschrieben 16. Februar 2009 Geschrieben 16. Februar 2009 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 Zitieren
robotto7831a Geschrieben 16. Februar 2009 Geschrieben 16. Februar 2009 Wie soll auch was passieren, wenn Du den Returnwert nicht abfragst? String (Java 2 Platform SE v1.4.2) Frank Zitieren
Jin84 Geschrieben 16. Februar 2009 Autor Geschrieben 16. Februar 2009 Wie jetzt? mit Variable = string.replaceAll... write(Variable) tut sich genausowenig, das hat ich vorher schon probiert. Zitieren
robotto7831a Geschrieben 16. Februar 2009 Geschrieben 16. Februar 2009 Laut Syntax wie folgt. zeilen = zeilen.replaceAll("\\*Nikolaus\\*", "Weihnachtsmann"); [/code] Frank Zitieren
Jin84 Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 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. Zitieren
Jin84 Geschrieben 17. Februar 2009 Autor Geschrieben 17. Februar 2009 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? Zitieren
Empfohlene Beiträge
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.