Hilfe zu StringTokenizer

Aahn

Grünschnabel
Grüß euch,

ich brauch hier eure Hilfe, und zwar geht es um ein Programm dass eine HTML Datei einliest, diese mit einem StringTokenizer auf ungültige Chars überprüft (zB: ", =, <, >) und danach in einem neuen Output, Output.html ausgibt.

folgendes hab ich geschafft, komm aber einfach nicht mehr weiter
Code:
public class UpdateInput {		
	public static void main (String[] args) throws IOException{
	
	String InFilename = "C:\\Documents and Settings\\Administrator\\Desktop\\InPut.html";	
	String OutFilename = "C:\\Temp\\java\\OutPut.html";
	
	FileInputStream in = null;
	FileOutputStream out = null;	

	in = new FileInputStream(InFilename);	
	
	int numberBytes = in.available();
	
	System.out.println("numberBytes:" + numberBytes);
	
	
	StringBuffer sb = new StringBuffer(5);
	
	//in = new FileInputStream(InFilename);
	
	int numberOfChars = 0;
	int byteRead = 0;

	while ((byteRead = in.read()) != -1) {
		sb.append((char) byteRead);
		numberOfChars++;
	}	

	
	
		String results = ("");
		// String validChars = (" '=' + '<' + '>' + 'jpeg'");
		String validChars = ("\"" + "=" +"=" + "=" + "=");
		
		StringTokenizer st = new StringTokenizer(validChars);
		
		
		int i = 0;
		
		while(st.hasMoreTokens())
		{
			String s = st.nextToken();
			System.out.println("Erg: " + s);	
			if(s.equals(validChars)){
				validChars = "";
				continue;
			}
			
			results = results + s;
		}
		
		//Momentaner Fehler: NullPointer, einer Variable liefert keinen Wert ins Outputfile zurück. 
	                                                                                                                                                                                                                                                                                                                                                                                        
		out = new FileOutputStream(OutFilename);
		out.write(numberOfChars);		
		out.write(results.getBytes());
		
		System.out.println("Zeichen1 " );		
		
		if (in != null) {
			in.close();
		}
		
		System.out.println("Zeichen2 " );
		
		if (out != null) {
			out.close();
		}
		System.out.println("Zeichen3 " );
	}
	

}

mein Problem ist, dass er die Validchars nicht im Inputfile überprüft und ausgibt bzw diese im Output löscht.

Hätte jemand eine Idee?

lg
 
StringTokenizer ist nicht dafür gedacht, um ein String auf Chars zu prüfen.

Es ist dazu gedacht einen String in Tokens("Häppchen") nach einem bestimmten Muster (Trennzeichen) aufzuteilen. Jedoch sollte der StringTokenizer nicht mehr verwendet werden, sondern string.split()
StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code

Das was du suchst ist wahrscheinlich ein Test mit Regular Expressions. Schau dir dazu die Klasse Pattern an.
 
Zuletzt bearbeitet:
ach du schreck...dann ist es also gar net möglich. nun jetzt steh ich an, keine ahnung wie ich diese html datei sonst einlesen - überprüfen - und speichern könnte.
 
Code:
public class UpdateInput3 {		
	public static void main (String[] args) throws IOException{
	
	String InFilename = "C:\\Documents and Settings\\Administrator\\Desktop\\InPut.html";	
	String OutFilename = "C:\\Temp\\java\\OutPut.html";		
	
	FileInputStream in;
	FileOutputStream out;	
	in = new FileInputStream(InFilename);
	out = new FileOutputStream(OutFilename);
	
	byte[ ] b ;
	Boolean a;
	a = true;	
	
	int numberBytes = 0;
	int len = 0;
	//in.read(b, numberBytes, len);
	
	numberBytes = in.available();
	System.out.println("numberBytes:01 " + in.available());
	numberBytes = in.read();
	
	System.out.println("numberBytes:01.1 " + in.read(b, numberBytes, len ));
	System.out.println("numberBytes:01.2 " + in.read());
	System.out.println("numberBytes:01.3 " + in.read());
	System.out.println("numberBytes:01.3 " + in.read());
	
					
		StringTokenizer st = new StringTokenizer("hallo", " ,\t");
		
		System.out.println("numberBytes:02 " + st.getClass());

		
	
//		st.hasMoreTokens();
//		System.out.println("numberBytes:03 " + st.hasMoreTokens());
		 
		st.nextToken(); 
//		System.out.println("numberBytes:04 " + st.nextToken()); 
		 
//		st.countTokens(); 
//		System.out.println("numberBytes:05 " + st.countTokens());
		
		
		
		
		
		
		
		
		
		
		
		
//*
		
		System.out.println("Zeichen1 " );		
		
		if (in != null) {
			in.close();
		}
		
		System.out.println("Zeichen2 " );
		
		if (out != null) {
			out.close();
		}
		System.out.println("Zeichen3 " );
		System.out.println("numbserBytes new: " + numberBytes);
	}
	

}


so siehts jetzt aus, hab das alles nohcmal umgebaut. ich möchte ihm in in.read die bytes usw einlesen lassen, aber er hat da nen fehler .

wie gesagt ihc möchte nachwievor aus dem eingelesenen html file eine überprüfung starten, die mir invalide chars rauslöscht. ich habe mir gedacht ich überprüf immer jede zeile für zeile.

anschließend geb ichs aus

hat jemand ne idee? ich hänge echt
 

Neue Beiträge

Zurück