Tok znakov proti toku bajtov v Javi

Tok znakov proti toku bajtov v Javi

Tok je neprekinjen tok podatkov. V Javi se V/I tokovi uporabljajo za branje iz vhodnih virov ali pisanje v izhodne cilje, kot so datoteke. Zagotavljajo način za zaporedni dostop do podatkov. Paket java.io vključuje razrede za ravnanje s tokovi bajtov in znakov ter tudi za pretvorbo med njimi.

  • Vhodni tok: bere podatke iz vira. 
  • Izhodni tok: zapiše podatke na cilj. 

Kdaj uporabiti pretok znakov prek pretoka bajtov:

V Javi so znaki shranjeni z uporabo konvencij Unicode. Tok znakov je uporaben, ko želimo obdelati besedilne datoteke. Te besedilne datoteke je mogoče obdelati znak za znakom. Velikost znakov je običajno 16 bitov.

Kdaj uporabiti bajtni tok prek toka znakov:

Bajtno usmerjeno bere bajt za bajtom. Bajtni tok je primeren za obdelavo neobdelanih podatkov, kot so binarne datoteke.

Ključne točke pri uporabi in delu s katerim koli od zgornjih tokov:

  • Razredi znakovnega toka se običajno končajo z Reader/Writer, medtem ko se razredi bajtnega toka končajo z InputStream/OutputStream.
  • Primeri kod v tem članku uporabljajo tokove brez medpomnjenja, ki so manj učinkoviti. Za boljšo zmogljivost jih običajno zavijemo z BufferedReader/BufferedWriter (tokovi znakov) ali BufferedInputStream/BufferedOutputStream (tokovi bajtov).
  • Po uporabi vedno zaprite tokove, da sprostite vire in preprečite napake.
  • Zgornje kode morda ne bodo delovale v spletnih prevajalnikih, ker datoteke morda ne obstajajo.

Tok znakov

V Javi so znaki shranjeni z uporabo konvencij Unicode. Tok znakov nam samodejno omogoča branje/pisanje podatkov znak za znakom. FileReader in FileWriter sta na primer tokova znakov, ki se uporabljata za branje iz vira in pisanje v cilj.

ne_unicode_bajtiTokovi znakov

Primer

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

Izhod:

Zapisuje vsebino v ciljno datoteko znak za znakom

Program uspešno izveden

Tok bajtov

Bajtni tok v Javi je tok, ki obravnava vhod in izhod neobdelanih 8-bitnih binarnih podatkov. Uporablja se predvsem za branje in pisanje nebesedilnih podatkov, kot so slike, avdio video ali katera koli binarna datoteka. Na primer FileInputStream se uporablja za branje iz vira in FileOutputStream za pisanje v cilj.

primer:

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

Izhod:

Program uspešno izveden

Razlike med tokom znakov in bajtnim tokom

Vidik Tok znakov Tok bajtov
Obdelana vrsta podatkov 16-bitni znaki Unicode (besedilo) 8-bitni neobdelani podatki (binarni)
Pouk se konča z Bralec / Pisatelj InputStream / OutputStream
Primerno za Besedilne datoteke Podatki Unicode Slike, avdio video binarne datoteke
Pretvorba Samodejno pretvori bajte v znake Nobena pretvorba ne deluje z neobdelanimi bajti
Primeri FileReader FileWriter FileInputStream FileOutputStream

Sorodni članek

  • Java IO - Vhod/izhod v Javi s primeri