Rakstzīmju straume vs baitu straume Java

Rakstzīmju straume vs baitu straume Java

Straume ir nepārtraukta datu plūsma. Java I/O straumes tiek izmantotas, lai lasītu no ievades avotiem vai rakstītu uz izvades galamērķiem, piemēram, failiem. Tie nodrošina veidu, kā secīgi piekļūt datiem. Java.io pakotnē ir iekļautas klases gan baitu, gan rakstzīmju straumju apstrādei, kā arī konvertēšanai starp tām.

  • Ievades straume: nolasa datus no avota. 
  • Izvades straume: ieraksta datus galamērķim. 

Kad izmantot rakstzīmju straumi, izmantojot baitu straumi:

Java valodā rakstzīmes tiek saglabātas, izmantojot Unikoda konvencijas. Rakstzīmju straume ir noderīga, ja vēlamies apstrādāt teksta failus. Šos teksta failus var apstrādāt pēc rakstzīmes. Rakstzīmju lielums parasti ir 16 biti.

Kad izmantot baitu straumi pār rakstzīmju straumi:

Orientēts uz baitu, nolasa baitu pa baitam. Baitu straume ir piemērota neapstrādātu datu, piemēram, bināro failu, apstrādei.

Galvenie punkti, lietojot un strādājot ar kādu no iepriekš minētajām straumēm:

  • Rakstzīmju straumes klases parasti beidzas ar Reader/Writer, savukārt baitu straumes klases beidzas ar InputStream/OutputStream.
  • Šajā rakstā minētie kodu piemēri izmanto nebuferētas straumes, kas ir mazāk efektīvas. Lai nodrošinātu labāku veiktspēju, mēs tos parasti iesaiņojam ar BufferedReader/BufferedWriter (rakstzīmju straumes) vai BufferedInputStream/BufferedOutputStream (baitu straumes).
  • Pēc lietošanas vienmēr aizveriet straumes, lai atbrīvotu resursus un novērstu kļūdas.
  • Iepriekš minētie kodi var nedarboties tiešsaistes kompilatoros, jo faili var nepastāvēt.

Rakstzīmju straume

Java valodā rakstzīmes tiek saglabātas, izmantojot Unikoda konvencijas. Rakstzīmju straume automātiski ļauj mums lasīt/rakstīt datus pa rakstzīmi. Piemēram, FileReader un FileWriter ir rakstzīmju straumes, ko izmanto, lai lasītu no avota un rakstītu uz galamērķi.

non_unicode_bytesRakstzīmju straumes

Piemērs

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

Izvade:

Ieraksta saturu mērķa failā pēc rakstzīmes

Programma veiksmīgi izpildīta

Baitu straume

Java baitu straume ir straume, kas apstrādā neapstrādātu 8 bitu bināro datu ievadi un izvadi. To galvenokārt izmanto, lai lasītu un rakstītu neteksta datus, piemēram, attēlus, audio un video vai jebkuru bināro failu. Piemēram FileInputStream tiek izmantots, lai lasītu no avota un FileOutputStream, lai rakstītu uz galamērķi.

Piemērs:

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

Izvade:

Programma veiksmīgi izpildīta

Rakstzīmju straumes un baitu straumes atšķirības

Aspekts Rakstzīmju straume Baitu straume
Apstrādātais datu tips 16 bitu unikoda rakstzīmes (teksts) 8 bitu neapstrādāti dati (bināri)
Nodarbības beidzas ar Lasītājs / rakstnieks InputStream / OutputStream
Piemērots Teksta faili Unikoda dati Attēli audio video binārie faili
Pārvēršana Automātiski pārvērš baitus par rakstzīmēm Neviena konvertēšana nedarbojas ar neapstrādātiem baitiem
Piemēri FileReader FileWriter FileInputStream FileOutputStream

Saistīts raksts

  • Java IO — ievade/izvade Java ar piemēriem