Ein Stream ist ein kontinuierlicher Datenfluss. In Java werden I/O-Streams verwendet, um aus Eingabequellen zu lesen oder in Ausgabeziele wie Dateien zu schreiben. Sie bieten eine Möglichkeit, sequentiell auf Daten zuzugreifen. Das java.io-Paket enthält Klassen für die Verarbeitung von Byte- und Zeichenströmen sowie für die Konvertierung zwischen ihnen.
- Eingabestream: liest Daten aus der Quelle.
- Ausgabestream: schreibt Daten an ein Ziel.
Wann sollte Character Stream anstelle von Byte Stream verwendet werden:
In Java werden Zeichen mithilfe von Unicode-Konventionen gespeichert. Der Zeichenstrom ist nützlich, wenn wir Textdateien verarbeiten möchten. Diese Textdateien können Zeichen für Zeichen verarbeitet werden. Die Zeichengröße beträgt normalerweise 16 Bit.
Wann sollte Byte Stream anstelle von Character Stream verwendet werden:
Byteorientiert liest Byte für Byte. Ein Bytestream eignet sich zur Verarbeitung von Rohdaten wie Binärdateien.
Wichtige Punkte bei der Verwendung und dem Umgang mit einem der oben genannten Streams:
- Zeichenstromklassen enden normalerweise mit Reader/Writer, während Bytestromklassen mit InputStream/OutputStream enden.
- Die Beispielcodes in diesem Artikel verwenden ungepufferte Streams, die weniger effizient sind. Für eine bessere Leistung verpacken wir sie üblicherweise mit BufferedReader/BufferedWriter (Zeichenströme) oder BufferedInputStream/BufferedOutputStream (Byteströme).
- Schließen Sie Streams immer nach der Verwendung, um Ressourcen freizugeben und Fehler zu vermeiden.
- Die oben genannten Codes können möglicherweise nicht in Online-Compilern ausgeführt werden, da möglicherweise keine Dateien vorhanden sind.
Charakter-Stream
In Java werden Zeichen mithilfe von Unicode-Konventionen gespeichert. Der Zeichenstrom ermöglicht es uns automatisch, Daten Zeichen für Zeichen zu lesen/schreiben. FileReader und FileWriter sind beispielsweise Zeichenströme, die zum Lesen von der Quelle und zum Schreiben in das Ziel verwendet werden.
Charakter-StreamsBeispiel
Javaimport java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Initially assigning null as we have not read anything FileReader sourceStream = null; try { // Reading from file sourceStream = new FileReader('/Users/mayanksolanki/Desktop/demo.rtf'); // Reading sourcefile and writing content to target file character by character. int temp; // If there is content inside file than read while ((temp = sourceStream.read()) != -1) System.out.println((char)temp); System.out.print('Program successfully executed'); } finally { if (sourceStream != null) sourceStream.close(); } } }
Ausgabe:
Array-Liste sortieren
Schreibt Inhalt Zeichen für Zeichen in die Zieldatei
Programm erfolgreich ausgeführt
Byte-Stream
Ein Bytestream in Java ist ein Stream, der die Eingabe und Ausgabe von rohen 8-Bit-Binärdaten verarbeitet. Es wird hauptsächlich zum Lesen und Schreiben von Nicht-Text-Daten wie Bildern, Audio-Videos oder anderen Binärdateien verwendet. Zum Beispiel FileInputStream wird zum Lesen aus der Quelle und FileOutputStream zum Schreiben in das Ziel verwendet.
Beispiel:
Javaimport java.io.*; public class GFG { public static void main(String[] args) throws IOException { // Initially assigning null ot objects for reading and writing to file FileInputStream sourceStream = null; FileOutputStream targetStream = null; try { // Passing the files via local directory sourceStream = new FileInputStream('/Users/mayanksolanki/Desktop/demo.rtf'); targetStream = new FileOutputStream('/Users/mayanksolanki/Desktop/democopy.rtf'); // Reading source file and writing content to file byte by byte int temp; // If there is content inside file than read while ((temp = sourceStream.read()) != -1) targetStream.write((byte)temp); System.out.print('Program successfully executed'); } // finally block that executes for sure where we are closing file connections to avoid memory leakage finally { if (sourceStream != null) sourceStream.close(); if (targetStream != null) targetStream.close(); } } }
Ausgabe:
Programm erfolgreich ausgeführt
Unterschiede zwischen Zeichenstrom und Bytestrom
| Aspekt | Charakter-Stream | Byte-Stream |
|---|---|---|
| Behandelter Datentyp | 16-Bit-Unicode-Zeichen (Text) | 8-Bit-Rohdaten (binär) |
| Der Unterricht endet mit | Leser/Autor | InputStream / OutputStream |
| Geeignet für | Textdateien Unicode-Daten | Bilder Audio-Video-Binärdateien |
| Konvertierung | Wandelt Bytes automatisch in Zeichen um | Mit Rohbytes funktioniert keine Konvertierung |
| Beispiele | FileReader FileWriter | FileInputStream FileOutputStream |
Verwandter Artikel
- Java IO – Eingabe/Ausgabe in Java mit Beispielen