logo

Character Stream vs Byte Stream i Java

En ström är ett kontinuerligt flöde av data. I Java används I/O-strömmar för att läsa från ingångskällor eller skriva till utdatadestinationer som filer. De tillhandahåller ett sätt att komma åt data sekventiellt. Java.io-paketet innehåller klasser för att hantera både byteströmmar och teckenströmmar och även för att konvertera mellan dem.

  • Indataström: läser data från källan. 
  • Utdataström: skriver data till en destination. 

När ska man använda Character Stream över Byte Stream:

I Java lagras tecken med Unicode-konventioner. Teckenström är användbart när vi vill bearbeta textfiler. Dessa textfiler kan bearbetas tecken för tecken. Teckenstorleken är vanligtvis 16 bitar.



När ska du använda Byte Stream över Character Stream:

Byteorienterad läser byte för byte. En byteström är lämplig för att bearbeta rådata som binära filer.

Nyckelpunkter när du använder och hanterar någon av ovanstående strömmar:

  • Teckenströmsklasser slutar vanligtvis med Reader/Writer medan byteströmklasser slutar med InputStream/OutputStream.
  • Exempelkoderna i den här artikeln använder obuffrade strömmar som är mindre effektiva. För bättre prestanda omsluter vi dem vanligtvis med BufferedReader/BufferedWriter (teckenströmmar) eller BufferedInputStream/BufferedOutputStream (byteströmmar).
  • Stäng alltid strömmar efter användning för att frigöra resurser och förhindra fel.
  • Ovanstående koder kanske inte körs i onlinekompilatorer eftersom filer kanske inte existerar.

Karaktärsström

I Java lagras tecken med Unicode-konventioner. Teckenström låter oss automatiskt läsa/skriva data tecken för tecken. Till exempel är FileReader och FileWriter teckenströmmar som används för att läsa från källan och skriva till destinationen.

icke_unicode_bytes' title=Karaktärsströmmar

Exempel

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();  }  } } 

Produktion:

Skriver innehåll till målfilen tecken för tecken

Programmet har körts framgångsrikt

Byte Stream

En byteström i Java är en ström som hanterar in- och utmatning av rå 8-bitars binär data. Det används huvudsakligen för att läsa och skriva icke-textdata, såsom bilder ljudvideo eller någon binär fil. Till exempel FileInputStream används för att läsa från källan och FileOutputStream för att skriva till destinationen.

Exempel:

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();  }  } } 

Produktion:

Programmet har körts framgångsrikt

Character Stream vs Byte Stream Skillnader

AspektKaraktärsströmByte Stream
Datatyp hanterad16-bitars Unicode-tecken (text)8-bitars rådata (binär)
Klasserna avslutas medLäsare/skribentInputStream / OutputStream
Lämplig förTextfiler Unicode-dataBilder ljud video binära filer
OmvandlingKonverterar byte till tecken automatisktIngen konvertering fungerar med råbyte
ExempelFileReader FileWriterFileInputStream FileOutputStream

Relaterad artikel

  • Java IO - Input/Output i Java med exempel