Character Stream vs Byte Stream i Java

Character Stream vs Byte Stream i Java

En strøm er en kontinuerlig strøm av data. I Java brukes I/O-strømmer til å lese fra inngangskilder eller skrive til utdatamål som filer. De gir en måte å få tilgang til data sekvensielt. Java.io-pakken inkluderer klasser for håndtering av både bytestrømmer og karakterstrømmer og også for konvertering mellom dem.

  • Inndatastrøm: leser data fra kilden. 
  • Utdatastrøm: skriver data til en destinasjon. 

Når du skal bruke Character Stream over Byte Stream:

I Java lagres tegn ved hjelp av Unicode-konvensjoner. Tegnstrøm er nyttig når vi ønsker å behandle tekstfiler. Disse tekstfilene kan behandles tegn for tegn. Tegnstørrelsen er vanligvis 16 biter.

Når du skal bruke Byte Stream over Character Stream:

Byteorientert leser byte for byte. En bytestrøm er egnet for å behandle rådata som binære filer.

Nøkkelpunkter ved bruk og håndtering av noen av strømmene ovenfor:

  • Tegnstrømklasser slutter vanligvis med Reader/Writer, mens bytestrømklasser slutter med InputStream/OutputStream.
  • Eksempelkodene i denne artikkelen bruker ubuffrede strømmer som er mindre effektive. For bedre ytelse pakker vi dem vanligvis inn med BufferedReader/BufferedWriter (tegnstrømmer) eller BufferedInputStream/BufferedOutputStream (bytestrømmer).
  • Steng alltid strømmer etter bruk for å frigjøre ressurser og forhindre feil.
  • Kodene ovenfor kjører kanskje ikke i online kompilatorer, da filer kanskje ikke eksisterer.

Karakterstrøm

I Java lagres tegn ved hjelp av Unicode-konvensjoner. Tegnstrøm lar oss automatisk lese/skrive data tegn for tegn. For eksempel FileReader og FileWriter er tegnstrømmer som brukes til å lese fra kilden og skrive til destinasjonen.

non_unicode_bytesKarakterstrømmer

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

Produksjon:

Skriver innhold til målfilen tegn for tegn

Programmet ble utført

Byte Stream

En bytestrøm i Java er en strøm som håndterer input og output av rå 8-bits binære data. Den brukes hovedsakelig til å lese og skrive ikke-tekstdata som bilder, lydvideo eller en hvilken som helst binær fil. For eksempel FileInputStream brukes til å lese fra kilden og FileOutputStream for å skrive til destinasjonen.

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

Produksjon:

Programmet ble utført

Forskjeller mellom karakterstrøm og bytestrøm

Aspekt Karakterstrøm Byte Stream
Datatype behandlet 16-bits Unicode-tegn (tekst) 8-bits rådata (binær)
Klassene avsluttes med Leser / skribent InputStream / OutputStream
Egnet for Tekstfiler Unicode-data Bilder lyd video binære filer
Omdannelse Konverterer byte til tegn automatisk Ingen konvertering fungerer med råbyte
Eksempler FileReader FileWriter FileInputStream FileOutputStream

Relatert artikkel

  • Java IO - Input/Output i Java med eksempler