Tok znakova u odnosu na tok bajtova u Javi

Tok znakova u odnosu na tok bajtova u Javi

Tok je kontinuirani tok podataka. U Javi I/O tokovi se koriste za čitanje iz ulaznih izvora ili pisanje na izlazna odredišta kao što su datoteke. Oni pružaju način sekvencijalnog pristupa podacima. Paket java.io uključuje klase za rukovanje tokovima bajtova i tokovima znakova te također za pretvorbu između njih.

  • Ulazni tok: čita podatke iz izvora. 
  • Izlazni tok: zapisuje podatke na odredište. 

Kada koristiti Tok znakova preko Toka bajtova:

U Javi se znakovi pohranjuju pomoću Unicode konvencija. Tok znakova koristan je kada želimo obraditi tekstualne datoteke. Ove tekstualne datoteke mogu se obrađivati ​​znak po znak. Veličina znakova je obično 16 bita.

Kada koristiti Byte Stream preko Character Stream-a:

Bajt orijentiran čita bajt po bajt. Tok bajtova prikladan je za obradu neobrađenih podataka poput binarnih datoteka.

Ključne točke pri korištenju i radu s bilo kojim od gore navedenih tokova:

  • Klase toka znakova obično završavaju s Reader/Writer dok klase toka bajtova završavaju s InputStream/OutputStream.
  • Primjeri kodova u ovom članku koriste tokove bez međuspremnika koji su manje učinkoviti. Za bolju izvedbu obično ih omotamo s BufferedReader/BufferedWriter (streamovi znakova) ili BufferedInputStream/BufferedOutputStream (streamovi bajtova).
  • Uvijek zatvorite tokove nakon korištenja kako biste oslobodili resurse i spriječili pogreške.
  • Gore navedeni kodovi možda se neće izvoditi u online kompajlerima jer datoteke možda ne postoje.

Tok znakova

U Javi se znakovi pohranjuju pomoću Unicode konvencija. Tok znakova nam automatski omogućuje čitanje/pisanje podataka znak po znak. Na primjer, FileReader i FileWriter su tokovi znakova koji se koriste za čitanje iz izvora i pisanje na odredište.

ne_unicode_bajtoviTokovi znakova

Primjer

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

Izlaz:

Zapisuje sadržaj u ciljnu datoteku znak po znak

Program je uspješno izvršen

Tok bajtova

Tok bajtova u Javi je tok koji upravlja ulazom i izlazom neobrađenih 8-bitnih binarnih podataka. Uglavnom se koristi za čitanje i pisanje netekstualnih podataka kao što su slike, audio, video ili bilo koja binarna datoteka. Na primjer FileInputStream koristi se za čitanje iz izvora, a FileOutputStream za pisanje na odredište.

Primjer:

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

Izlaz:

Program je uspješno izvršen

Razlike u toku znakova u odnosu na tok bajtova

Aspekt Tok znakova Tok bajtova
Obrađena vrsta podataka 16-bitni Unicode znakovi (tekst) 8-bitni neobrađeni podaci (binarni)
Nastava završava s Čitatelj/pisac InputStream / OutputStream
Prikladno za Tekstualne datoteke Unicode podataka Slike audio video binarne datoteke
Pretvorba Automatski pretvara bajtove u znakove Nijedna konverzija ne radi s neobrađenim bajtovima
Primjeri FileReader FileWriter FileInputStream FileOutputStream

Povezani članak

  • Java IO - Ulaz/Izlaz u Javi s primjerima

Možda Će Vam Se Svidjeti