Java Tag 10
Saturday 29. November 2008 | dextaNach den Dateioperationen kommen in Java logischer weise die Streams, die jede Art von Daten behandeln können, ob es nun Netzwerk, Tastatureingabe oder Dateien sind spielt keine Rolle. In diesem Beispiel nehme ich den FileWriter und leite eine neue Klasse davon ab, sagen wir mal sie heißt MeinFilterSchreiber, und überschreiben die write() Methode um einen Filter ein zu bauen der nur bestimmte Zeichen schreibt. Alle Zeichen die nicht im Bereich von a-z oder A-Z liegen werden durch einen * ersetzt, dank an meinen Kollegen der diese Bedingung in nur einer Zeile erledigen konnte. Mir war neu das ein Zeichen in einfachen Anführungszeichen als Char Wert interpretiert werden kann.
package tag_10;
import java.io.*;
public class MeinFilterSchreiber extends FileWriter {
MeinFilterSchreiber(String fileName) throws IOException {
super(fileName);
}
public void write (int c) throws IOException {
super.write((c>=’a’ && c<='z' || c>=’A’ && c<=’Z')? c:’*');
}
public void write(char c) throws IOException {
this.write((int) c);
}
public void write(String c) throws IOException {
this.write(c.charAt(0));
}
}
Nach dem überschreiben der wirte() Methoden kann die weiteren davon ableiten, ein kleines Beispiel was das für Auswirkungen hat sieht man bei der append() Methode die nicht überschrieben wurde aber selbst nur die write() benutzt und zwar unsere neue. Bei der geerbten Methode die als Parameter ein Array von Chars erwartet sowie ein Offset und eine Länge sieht es dann wieder anders aus diese verwendet eine andere um auf den Stream zu schreiben.
Main:
package tag_10;
import java.io.*;
/**
*
* @author Campus
*/
public class Main{
/**
* @param args the command line arguments
*/
public static void main(String[] args) throws IOException {
MeinFilterSchreiber mFilter = new MeinFilterSchreiber(“MeineDaten.dat”);
for(int i = 42;i<123;i++) {
mFilter.write(i);
}
mFilter.write(23);
mFilter.write(42);
mFilter.write(’4′);
mFilter.write(“2″.charAt(0));
mFilter.write(“D”.charAt(0));
mFilter.write(“X”);
mFilter.append(’4′);
mFilter.append(“2″);
char[] zeichen = {‘d’,'E’,'x’,'T’,'a’,'_’,’4′,’2′};
mFilter.write(zeichen,0,zeichen.length);
mFilter.close();
}
}
Verwandte Artikel
.. Java Tag 9 . .. Java Tag 8 . .. PHP – Function oder Class . .. Java Tag 4 . .. Java Tag 1 .

