Character Stream vs Byte Stream i Java

Character Stream vs Byte Stream i Java

En strøm er en kontinuerlig strøm af data. I Java bruges I/O-streams til at læse fra inputkilder eller skrive til outputdestinationer såsom filer. De giver en måde at få adgang til data sekventielt. Java.io-pakken inkluderer klasser til håndtering af både byte-strømme og karakterstrømme og også til konvertering mellem dem.

  • Inputstrøm: læser data fra kilden. 
  • Outputstrøm: skriver data til en destination. 

Hvornår skal du bruge Character Stream over Byte Stream:

I Java gemmes tegn ved hjælp af Unicode-konventioner. Tegnstrøm er nyttig, når vi vil behandle tekstfiler. Disse tekstfiler kan behandles tegn for tegn. Tegnstørrelse er typisk 16 bit.

Hvornår skal du bruge Byte Stream over Character Stream:

Byteorienteret læser byte for byte. En bytestrøm er velegnet til at behandle rådata som binære filer.

Nøglepunkter ved brug og håndtering af nogen af ​​ovenstående streams:

  • Karakterstreamklasser slutter normalt med Reader/Writer, mens bytestreamklasser slutter med InputStream/OutputStream.
  • Eksempelkoderne i denne artikel bruger ikke-buffrede streams, som er mindre effektive. For bedre ydeevne pakker vi dem almindeligvis ind med BufferedReader/BufferedWriter (tegnstrømme) eller BufferedInputStream/BufferedOutputStream (bytestrømme).
  • Luk altid streams efter brug for at frigøre ressourcer og forhindre fejl.
  • Ovenstående koder kører muligvis ikke i online-kompilere, da filer muligvis ikke eksisterer.

Karakterstrøm

I Java gemmes tegn ved hjælp af Unicode-konventioner. Tegnstrøm giver os automatisk mulighed for at læse/skrive data tegn for tegn. For eksempel er FileReader og FileWriter karakterstrømme, der bruges til at læse fra kilden og skrive til destinationen.

non_unicode_bytesKarakterstrømme

Eksempel

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 indhold til målfilen tegn for tegn

Program udført med succes

Byte Stream

En byte-stream i Java er en strøm, der håndterer input og output af rå 8-bit binære data. Det bruges hovedsageligt til at læse og skrive ikke-tekstdata, såsom billeder, lyd-video eller enhver binær fil. F.eks FileInputStream bruges til at læse fra kilden og FileOutputStream til at skrive til destinationen.

Eksempel:

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:

Program udført med succes

Forskelle i karakterstream vs bytestream

Aspekt Karakterstrøm Byte Stream
Datatype håndteret 16-bit Unicode-tegn (tekst) 8-bit rådata (binær)
Klasser afsluttes med Læser/skribent InputStream / OutputStream
Velegnet til Tekstfiler Unicode-data Billeder lyd video binære filer
Omdannelse Konverterer bytes til tegn automatisk Ingen konvertering virker med rå bytes
Eksempler FileReader FileWriter FileInputStream FileOutputStream

Relateret artikel

  • Java IO - Input/Output i Java med eksempler