Character Stream vs Byte Stream i Java

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_bytesKaraktä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

Aspekt Karaktärsström Byte Stream
Datatyp hanterad 16-bitars Unicode-tecken (text) 8-bitars rådata (binär)
Klasserna avslutas med Läsare/skribent InputStream / OutputStream
Lämplig för Textfiler Unicode-data Bilder ljud video binära filer
Omvandling Konverterar byte till tecken automatiskt Ingen konvertering fungerar med råbyte
Exempel FileReader FileWriter FileInputStream FileOutputStream

Relaterad artikel

  • Java IO - Input/Output i Java med exempel