16.11.2013 Aufrufe

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

Programmieren in Java - HostFiXX.de

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

<strong>Programmieren</strong> <strong>in</strong> <strong>Java</strong><br />

private Str<strong>in</strong>g readNormal(Str<strong>in</strong>g fl)<br />

{<br />

Str<strong>in</strong>gBuffer s = new Str<strong>in</strong>gBuffer();<br />

try {<br />

FileRea<strong>de</strong>r fread = new FileRea<strong>de</strong>r(fl);<br />

<strong>in</strong>t zeichen;<br />

while ((zeichen = fread.read()) != -1)<br />

s.append((char) zeichen);<br />

fread.close();<br />

}<br />

catch(IOException e) { System.err.pr<strong>in</strong>tln(e); }<br />

return s.toStr<strong>in</strong>g();<br />

}<br />

private Str<strong>in</strong>g readFilter(Str<strong>in</strong>g fl)<br />

{<br />

Str<strong>in</strong>gBuffer s = new Str<strong>in</strong>gBuffer();<br />

try {<br />

FileRea<strong>de</strong>r fread = new FileRea<strong>de</strong>r(fl);<br />

CaseFilter ff = new CaseFilter(fread);<br />

/* Die CaseFilter-Klasse implementiert e<strong>in</strong>e erweiterte<br />

Funktionalitaet fuer read(). Beim E<strong>in</strong>lesen wer<strong>de</strong>n<br />

Kle<strong>in</strong>buchstaben <strong>in</strong> Grossbuchstaben umgewan<strong>de</strong>lt */<br />

<strong>in</strong>t zeichen;<br />

while ((zeichen = ff.read()) != -1)<br />

s.append((char) zeichen);<br />

ff.close();<br />

}<br />

catch(IOException e) { System.err.pr<strong>in</strong>tln(e); }<br />

return s.toStr<strong>in</strong>g();<br />

}<br />

public static void ma<strong>in</strong>(Str<strong>in</strong>g [] args)<br />

{<br />

new DekoStream();<br />

}<br />

}<br />

Ab JDK 1.1 gibt es e<strong>in</strong>en vor<strong>de</strong>f<strong>in</strong>ierten E<strong>in</strong>gabefilter PushBackRea<strong>de</strong>r, <strong>de</strong>r aus<br />

FilterRea<strong>de</strong>r abgeleitet ist. E<strong>in</strong> PushBackRea<strong>de</strong>r erweitert die Klasse<br />

FilterRea<strong>de</strong>r um e<strong>in</strong>en e<strong>in</strong> Byte großen PushBack-Puffer. Dieser erlaubt e<strong>in</strong>er<br />

Anwendung, das zuletzt gelesenen Zeichen wie<strong>de</strong>r <strong>in</strong> <strong>de</strong>n E<strong>in</strong>gabestrom zurück zu<br />

schieben. Der nächste Lesezugriff liest dann nicht das folgen<strong>de</strong> Zeichen im<br />

E<strong>in</strong>gabestrom, son<strong>de</strong>rn das gera<strong>de</strong> zurückgelesene Zeichen.<br />

Ausgabefilter<br />

Die Architektur <strong>de</strong>r Writer-Klassen macht es möglich eigene Filter zu konstruieren.<br />

Das kann bspw. durch Überlagern <strong>de</strong>r Klasse Writer 141 geschehen. Der offizielle<br />

Weg besteht allerd<strong>in</strong>gs <strong>in</strong> <strong>de</strong>r Überlagerung <strong>de</strong>r abstrakten Klasse FilterWriter.<br />

FilterWriter besitzt e<strong>in</strong> <strong>in</strong>ternes Writer-Objekt out, das bei <strong>de</strong>r Initialisierung an<br />

<strong>de</strong>n Konstruktor übergeben wird. Zusätzlich überlagert es drei <strong>de</strong>r vier write-<br />

Metho<strong>de</strong>n, um die Ausgabe auf out umzuleiten.<br />

Damit e<strong>in</strong> eigener FilterWriter erzeugt wer<strong>de</strong>n kann, muß beachtet wer<strong>de</strong>n:<br />

- die eigene Klasse leitet sich von FilterWriter ab<br />

- <strong>de</strong>r Konstruktor bekommt als Parameter e<strong>in</strong> Writer-Objekt und ruft mit super(out) <strong>de</strong>n Konstruktor<br />

<strong>de</strong>r Superklasse auf. Das ist die Klasse FilterWriter.<br />

141 wie es bspw. bei Pr<strong>in</strong>tWriter und BufferedWriter realisier wur<strong>de</strong>.<br />

139

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!