10.3.1 | Benutzung der Adapterklassen |
Der Konstruktor der Klasse InputStreamReader erwartet als Argument ein Exemplar der Klasse InputStream. Über die Methoden der Klasse InputStreamReader kann man dann anschließend Unicode-zeichenweise auf die Byte-Daten, die der InputStream liefert, zugreifen:InputStreamReader in = new InputStreamReader(System.in);Den umgekehrten Effekt bewirkt ein zwischengeschalteter OutputStreamWriter. Ihm werden Unicode-Zeichen zum Schreiben übergeben, die automatisch in ihre Byte-Repräsentation umgewandelt werden:OutputStreamWriter out = new OutputStreamWriter(System.out);Der Umweg über diese Adapterklassen stellt in Java die einzige Möglichkeit dar, Ein- und Ausgaben, die über die Standard-Streams verarbeitet werden, direkt in Unicode umzuwandeln bzw. Unicode-Zeichen direkt in die plattformabhängige Zeichenkodierung zu überführen.
Wird z. B. die Ausgabe nicht über einen OutputStreamWriter konvertiert, so wird durch die direkte Ausgabe über einen PrintStream, wie er von der System.out dargestellt wird, das obere Byte des Unicode-Zeichens abgeschnitten. Das ausgegebene Zeichen würde also nur durch das untere Byte kodiert werden. Dieser Effekt würde sich bei einer Kodierung in iso-latin-1 zwar nicht bemerkbar machen, da bei diesem Zeichensatz in Unicode das obere Byte sowieso immer 0 ist. Bei Plattformen mit anderen Zeichensätzen könnten allerdings bei der Ausgabe falsche Zeichen zustande kommen.