logo

Zeichenstrom vs. Bytestrom in Java

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.

non_unicode_bytes' title=Charakter-Streams

Beispiel

Java
import 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:

Java
import 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

AspektCharakter-StreamByte-Stream
Behandelter Datentyp16-Bit-Unicode-Zeichen (Text)8-Bit-Rohdaten (binär)
Der Unterricht endet mitLeser/AutorInputStream / OutputStream
Geeignet fürTextdateien Unicode-DatenBilder Audio-Video-Binärdateien
KonvertierungWandelt Bytes automatisch in Zeichen umMit Rohbytes funktioniert keine Konvertierung
BeispieleFileReader FileWriterFileInputStream FileOutputStream

Verwandter Artikel

  • Java IO – Eingabe/Ausgabe in Java mit Beispielen