Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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 :)

Wie jetzt?

mit

Variable = string.replaceAll...

write(Variable)

tut sich genausowenig, das hat ich vorher schon probiert.

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.

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?

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.