From 33613a85afc4b1481367fbe92a17ee59c240250b Mon Sep 17 00:00:00 2001 From: Sven Eisenhauer Date: Fri, 10 Nov 2023 15:11:48 +0100 Subject: add new repo --- .../hjp5/html/k100121.html | 166 +++++++++++++++++++++ 1 file changed, 166 insertions(+) create mode 100644 Master/Reference Architectures and Patterns/hjp5/html/k100121.html (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100121.html') diff --git a/Master/Reference Architectures and Patterns/hjp5/html/k100121.html b/Master/Reference Architectures and Patterns/hjp5/html/k100121.html new file mode 100644 index 0000000..df24f1c --- /dev/null +++ b/Master/Reference Architectures and Patterns/hjp5/html/k100121.html @@ -0,0 +1,166 @@ + + + +Handbuch der Java-Programmierung, 5. Auflage + + + + + + + + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage +
 <<  +  <   +  >   + >>  + API  +Kapitel 18 - Character-Streams +
+
+ + + + +

18.1 Allgemeine Konzepte

+
+ +
+ +

+Als Sprache, die nicht nur das Erstellen vorwiegend grafikorientierter +Web-Applets ermöglicht, sondern auch zur Entwicklung von eigenständigen +Anwendungen eingesetzt werden soll, bietet Java eine umfangreiche +Bibliothek zum sequenziellen und wahlfreien Zugriff auf Dateien und +zur Verwaltung von Verzeichnissen. Während der wahlfreie Zugriff +ähnlich wie in anderen Sprachen gelöst ist, wurden bei der +sequenziellen Ein-/Ausgabe neue Wege beschritten. Die dafür verwendeten +Klassen realisieren das aus anderen Sprachen bekannte Konzept der +Streams auf der Basis objektorientierter Techniken. + +

+Ein Stream wird dabei zunächst +als abstraktes Konstrukt eingeführt, dessen Fähigkeit darin +besteht, Zeichen auf ein imaginäres Ausgabegerät zu schreiben +oder von diesem zu lesen. Erst konkrete Unterklassen binden die Zugriffsroutinen +an echte Ein- oder Ausgabegeräte, wie beispielsweise an Dateien, +Strings oder Kommunikationskanäle im Netzwerk. + +

+Das Stream-Klassenkonzept von Java bietet die Möglichkeit, Streams +zu verketten oder zu schachteln. Die Verkettung von Streams ermöglicht +es, mehrere Dateien zusammenzufassen und für den Aufrufer als +einen einzigen Stream darzustellen. Das Schachteln von Streams erlaubt +die Konstruktion von Filtern, die bei der Ein- oder Ausgabe bestimmte +Zusatzfunktionen übernehmen, beispielsweise das Puffern von Zeichen, +das Zählen von Zeilen oder die Interpretation binärer Daten. +Beide Konzepte sind mit normalen Sprachmitteln realisiert und können +selbst erweitert werden. Es ist ohne weiteres möglich, eigene +Filter zu schreiben, die den Ein- oder Ausgabestrom analysieren und +anwendungsbezogene Funktionalitäten realisieren. + +

+Alle Klassen zur Dateiein- und -ausgabe befinden sich im Paket java.io. +Um sie zu verwenden, sollte daher folgende Anweisung an den Anfang +eines Programms gestellt werden: + +

+import java.io.*;
+
+ + +

+Bis zur Version 1.0 des JDK gab es nur Byte-Streams +in Java. Wesentliches Merkmal eines Byte-Streams war es dabei, dass +jede einzelne Transporteinheit 8 Bit lang war (also ein einzelnes +Byte). Während damit die Kompatibilität zu Textdateien, +die mit konventionellen Programmiersprachen erstellt wurden oder von +diesen gelesen werden sollten, gewährleistet war, gab es naturgemäß +Probleme bei der Umwandlung in die 16 Bit langen Unicode-Zeichen, +die innerhalb von Java zur Zeichendarstellung benutzt werden. Zudem +war die Abbildung zwischen Bytes und Characters eher unsystematisch +gelöst und bot wenig Unterstützung für die Anpassung +an unterschiedliche Zeichensätze und nationale Gegebenheiten. + +

+All dies hat die JDK-Designer dazu bewogen, das Konzept der Streams +in der Version 1.1 zu überdenken und die neue Gruppe der Character-Streams +einzuführen. Character-Streams verwenden grundsätzlich 16 +Bit lange Unicode-Zeichen und arbeiten daher besser mit den String- +und Zeichentypen von Java zusammen. Um zu den 8-Bit-Zeichensätzen +in externen Dateien kompatibel zu bleiben, wurden explizite Brückenklassen +eingeführt, die Character-Streams in Byte-Streams überführen +und umgekehrt. Diese bieten nun auch die Möglichkeit der Anpassung +an spezielle Zeichensätze und lokale Besonderheiten. + +

+Wir werden uns in diesem Kapitel ausschließlich mit den Character-Streams +beschäftigen, weil sie für die Verarbeitung von textbasierten +Streams wichtig sind. Byte-Streams und Brückenklassen werden +im nächsten Kapitel erläutert. Wir werden dort sehen, dass +es - selbst im UNICODE-Zeitalter - eine ganze Reihe von Anwendungen +für byteorientierte Dateizugriffe gibt. +

+ + + + + + + + + +
+ +

+Die Beispiele in diesem Kapitel wurden hauptsächlich unter Windows +entwickelt und getestet, und mitunter kommen darin windows-spezifische +Besonderheiten vor. So wird als Zeilenendezeichen »\r\n« +verwendet, obwohl unter UNIX »\n« und auf dem Mac »\r« +gebräuchlich ist. Am besten ist es natürlich, das System-Property +line.separator +zu verwenden (siehe Abschnitt 16.3.1). +Auch bei den Pfadseparatoren gibt es Unterschiede. Während unter +Windows der Backslash »\« verwendet wird, ist es unter UNIX +der Slash »/«. Mit dem System-Property file.separator +kann auch auf diese Eigenschaft portabel zugegriffen werden.

+ + + + +
 Hinweis 
+
+


+ + + +
 Titel  + Inhalt  + Suchen  + Index  + DOC  +Handbuch der Java-Programmierung, 5. Auflage, Addison +Wesley, Version 5.0.1 +
 <<  +  <   +  >   + >>  + API  +© 1998, 2007 Guido Krüger & Thomas +Stark, http://www.javabuch.de +
+ + + -- cgit v1.2.3