diff options
| author | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
|---|---|---|
| committer | Sven Eisenhauer <sven@sven-eisenhauer.net> | 2023-11-10 15:11:48 +0100 |
| commit | 33613a85afc4b1481367fbe92a17ee59c240250b (patch) | |
| tree | 670b842326116b376b505ec2263878912fca97e2 /Master/Reference Architectures and Patterns/hjp5/html/k100121.html | |
| download | Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.gz Studium-33613a85afc4b1481367fbe92a17ee59c240250b.tar.bz2 | |
Diffstat (limited to 'Master/Reference Architectures and Patterns/hjp5/html/k100121.html')
| -rw-r--r-- | Master/Reference Architectures and Patterns/hjp5/html/k100121.html | 166 |
1 files changed, 166 insertions, 0 deletions
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 @@ +<html>
+<head>
+<title>
+Handbuch der Java-Programmierung, 5. Auflage
+</title>
+</head>
+<body>
+<a name="startofbody"></a>
+<script language="JavaScript" src="hjp4lib.js">
+</script>
+<script language="JavaScript">
+installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100120.html;106,k100120.html;107,k100122.html;108,k100125.html");
+</script>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100120.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100120.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100122.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100125.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">Kapitel 18 - Character-Streams
+</table>
+<hr>
+
+
+<!-- Section -->
+<a name="sectlevel2id018001"></a>
+<h2>18.1 Allgemeine Konzepte </h2>
+<hr>
+<ul>
+<li><a href="k100121.html#sectlevel2id018001">18.1 Allgemeine Konzepte</a>
+</ul>
+<hr>
+
+<p>
+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
+<i>Streams</i> auf der Basis objektorientierter Techniken.
+
+<p>
+Ein <a name="ixa101235"><i>Stream</i></a> 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.
+
+<p>
+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.
+
+<p>
+Alle Klassen zur Dateiein- und -ausgabe befinden sich im Paket <a name="ixa101236"><a href="index_j.html#ixb100189"><font color=#000080><tt>java.io</tt></font></a></a>.
+Um sie zu verwenden, sollte daher folgende Anweisung an den Anfang
+eines Programms gestellt werden:
+<font color="#000077">
+<pre>
+import java.io.*;
+</pre>
+</font>
+
+<p>
+Bis zur Version 1.0 des JDK gab es nur <a name="ixa101237"><i>Byte-Streams</i></a>
+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.
+
+<p>
+All dies hat die JDK-Designer dazu bewogen, das Konzept der Streams
+in der Version 1.1 zu überdenken und die neue Gruppe der <a name="ixa101238"><i>Character-Streams</i></a>
+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.
+
+<p>
+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.
+<p>
+<table border=0 cellspacing=0 cellpadding=0 width=100%>
+<tr>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top width=1000>
+
+<p>
+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
+<a name="ixa101239"><a href="index_l.html#ixb100833"><font color=#000080><tt>line.separator</tt></font></a></a>
+zu verwenden (siehe <a href="k100110.html#systemproperties">Abschnitt 16.3.1</a>).
+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 <a name="ixa101240"><a href="index_f.html#ixb100831"><font color=#000080><tt>file.separator</tt></font></a></a>
+kann auch auf diese Eigenschaft portabel zugegriffen werden.</td>
+<td><img src="trp1_1.gif" width=2></td>
+<td valign=top>
+<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
+<tr>
+<td><font color="#FFFFFF"> Hinweis </font></td>
+</tr>
+</table>
+</td>
+<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
+</tr>
+</table>
+<hr>
+<table border=0 cellpadding=0 cellspacing=1 width="100%">
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
+<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
+Wesley, Version 5.0.1
+<tr bgcolor="#EEFFCC">
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100120.html"> << </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100120.html"> < </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100122.html"> > </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="k100125.html"> >> </a>
+<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
+<td align="right">© 1998, 2007 Guido Krüger & Thomas
+Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
+</table>
+<a name="endofbody"></a>
+</body>
+</html>
|
