ReplaceALL - Fehlersuche

  • Themenstarter Themenstarter Legionista
  • Beginndatum Beginndatum
L

Legionista

Gast
Guten Tag,

ich habe eine Aufgabe, wo alle Zeilen, die mit einem # beginnen durch ein ! ausgetauscht werden sollen. Leider passiert dies nicht bei mir. Findet jemand vllt. den Fehler?

Java:
package silleraaron;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class Controll {
	
	
	File liste = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\Liste.txt");
	File heise = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\heise.txt");
	File gmx = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\gmx.txt");
	File spamblocker = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\spamblocker.txt");
	
	String stringHeise, stringGMX, stringSpamblocker;
	
	RandomAccessFile raf;

	public Controll() {
		
		try {
			
			
			raf = new RandomAccessFile(spamblocker, "rw");
			
			while ((stringSpamblocker = raf.readLine())!=null) {
				
				if (stringSpamblocker.startsWith("#"))
				{
					
					stringSpamblocker.replaceAll("#", "!");
					
				}

				
			}
			raf.close();
			
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
		
		
	}

	
	public static void main(String[] args) {
		new Controll();

	}

}

Vielen Dank!
 
Erstmal solltest du dir anschauen was replaceAll zurückliefert. Dann solltest du dir überlegen was du mit dem Rückgabewert machst, im Moment nämlich nichts 🙂
Sollte da nicht wenigstens auch ein Schreibbefehl im Code zu sehen sein, oder was genau hast du vor?
 
Hallo,

danke!

Hier mein neuer Code:

Java:
package silleraaron;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class Controll {
	
	
	File liste = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\Liste.txt");
	File heise = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\heise.txt");
	File gmx = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\gmx.txt");
	File spamblocker = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\spamblocker.txt");
	
	String stringHeise, stringGMX, stringSpamblocker;
	
	RandomAccessFile raf;

	public Controll() {
		
		try {
			
			
			raf = new RandomAccessFile(spamblocker, "rw");
			
			while ((stringSpamblocker = raf.readLine())!=null) {
				System.out.println(stringSpamblocker);
				
				if (stringSpamblocker.startsWith("#"))
				{
					
					stringSpamblocker.replaceAll("#", "!");
					raf.writeBytes(stringSpamblocker);
					
				}

				
			}
			raf.close();
			
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
		
		
	}

	
	public static void main(String[] args) {
		new Controll();

	}

}

Nachdem ich nun die Datei geöffnet habe, sieht sie auch anders aus und einige Zeilen sind verschwunden, jedoch nicht alle. Um dies zu verdeutlichen, zeige ich sie einmal:

ALTE DATEI:

# Temporary Blackhole List (DNSBL queries via ix.dnsbl.manitu.net)
#
# Wichtige Hinweise unter NiX Spam: DNSBL und Blacklist zum Download | iX
#
# Important information here: NiX Spam DNSBL and blacklist for download | iX
#
# timestamp spam source
#

2007-01-12T20:06+0100 232.13.117.2
2007-01-11T15:35+0100 132.135.52.126
2007-01-11T22:39+0100 168.140.234.170
2007-01-12T02:48+0100 133.147.193.6
2007-01-11T23:46+0100 151.149.33.228

#
# timestamp spam source
#
2007-01-11T15:35+0100 1227mamod.info
2007-01-11T23:46+0100 ms_lottery@universia.net.mx
2007-01-12T20:06+0100 msgiftkenneth@easymail.hu
2007-01-11T23:46+0100 116.109.105.12.cable.skst.cablerocket.net
2007-01-11T23:46+0100 bois.qwest.net


NEUE DATEI:

# Temporary Blackhole List (DNSBL queries via ix.dnsbl.manitu.net)
# Temporary Blackhole List (DNSBL queries via ix.dnsbl.manitu.net)
# Important information here: NiX Spam DNSBL and blacklist for download | iX
# Important information here: http://www.ix.de/nixspam/dnsbl_en/.117.2
2007-01-11T15:35+0100 132.135.52.126
2007-01-11T22:39+0100 168.140.234.170
2007-01-12T02:48+0100 133.147.193.6
2007-01-11T23:46+0100 151.149.33.228

#
# timestamp spam source
#
# 07-01-11T15:35+0100 1227mamod.info
2007-01-11T23:46+0100 ms_lottery@universia.net.mx
2007-01-12T20:06+0100 msgiftkenneth@easymail.hu
2007-01-11T23:46+0100 116.109.105.12.cable.skst.cablerocket.net
2007-01-11T23:46+0100 bois.qwest.net

Leider nicht ganz das gewünsche Ergebnis.
 
Du machst den größten Fehler, den man im Umgang mit Dateien machen kann, Du liest und Schreibst gleichzeitig die selbe Datei!.

Schreibe in eine (temoräre) neue Datei.
Nach der Filter-Aktion löschst Du die alte und kopierts die neue an ihre Stelle...

Wenn Du dann nicht nur die Zeilen in die Datei schreibst, die mit dem
Code:
#
beginnen kommt vielleicht auch das gewünschte Ergebnis raus.

bye
TT
 
Anbei mein neuer Code:

Java:
package silleraaron;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class Controll {
	
	
	File liste = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\Liste.txt");
	File heise = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\heise.txt");
	File gmx = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\gmx.txt");
	File spamblocker = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\spamblocker.txt");
	
	String stringHeise, stringGMX, stringSpamblocker, stringSpamblockerNEU;
	
	RandomAccessFile raf;

	public Controll() {
		
		try {
			
			
			raf = new RandomAccessFile(spamblocker, "rw");
			
			while ((stringSpamblocker = raf.readLine())!=null) {
				
				
				if (stringSpamblocker.startsWith("#"))
				{
					
					stringSpamblocker.replaceAll("#", "!");

					raf.writeBytes(stringSpamblockerNEU + "\r\n");
					
			
				}

				
			}
			raf.close();
			
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
		
		
	}

	
	public static void main(String[] args) {
		new Controll();

	}

}

Meintest du vllt. sowas ? Leider funktioniert immer noch nicht ganz.
 
Hallo,

glaube das, was du meinst, ansatzweise verstanden zu haben:

Hier der Code:

Java:
package silleraaron;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.RandomAccessFile;

public class Controll {
	
	
	File liste = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\Liste.txt");
	File heise = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\heise.txt");
	File gmx = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\gmx.txt");
	File spamblocker = new File("I:\\eclipse\\MyProjects\\Blacklist\\Textdateien\\spamblocker.txt");
	
	String stringHeise, stringGMX, stringSpamblocker, stringSpamblockerNEU;
	
	RandomAccessFile raf, raf2;

	public Controll() {
		
		try {
			
			
			raf = new RandomAccessFile(spamblocker, "rw");
			raf2 = new RandomAccessFile(liste, "rw");
			
			while ((stringSpamblocker = raf.readLine())!=null) {
				
				
				if (stringSpamblocker.startsWith("#"))
				{
					
					stringSpamblocker.replaceAll("#", "!");

					raf2.writeBytes(stringSpamblocker + "\r\n");
					
			
				}

				
			}
			raf.close();
			
			
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
		
		
		
	}

	
	public static void main(String[] args) {
		new Controll();

	}

}

Jetzt steht bei mir in der Datei Liste.txt folgendes:

# Temporary Blackhole List (DNSBL queries via ix.dnsbl.manitu.net)
# Important information here: NiX Spam DNSBL and blacklist for download | iX
#
#
 
naja .. es geht ja in die richtige richtung ... aber lies dir noch mal ganz genau die erste antwort durch ...

als tipp : String ist immutable ... steht in jedem grundlagen buch ... und wie man richtig mit files arbeitet auch
 
Hallo,

ReplaceAll liefet ebenfalls einen String zurück, oder irre ich mich?

Dieses "immutable" - hast du da eine genauere Erklärung dazu?

Könntet Ihr mir noch einen Tipp geben?
 
Code:
stringSpamblocker.replaceAll("#", "!")
lässt
Code:
stringSpamblocker
unverändert.
 
Hallo,

ReplaceAll liefet ebenfalls einen String zurück, oder irre ich mich?

Dieses "immutable" - hast du da eine genauere Erklärung dazu?

Könntet Ihr mir noch einen Tipp geben?

sach ma ... is bei euch allen i-wie google kaputt ?

wo bitte ist es so schwer auf http : // www . google . de zu gehen ... und dort : "java string immutable" einzugeben ? ...

wie gesagt : das steht in JEDEM grundlagenbuch ... und google weis es auch ...

lernresistenz FTW -.-'
 

Neue Themen


Zurück
Oben