Character Stream vs Byte Stream Java nyelven

Character Stream vs Byte Stream Java nyelven

Az adatfolyam folyamatos adatáramlás. A Java-ban az I/O adatfolyamokat bemeneti forrásokból olvassák, vagy kimeneti helyekre, például fájlokra írják. Lehetővé teszik az adatok egymás utáni elérését. A java.io csomag tartalmaz osztályokat a bájtfolyamok és karakterfolyamok kezelésére, valamint a köztük lévő konvertálásra.

  • Bemeneti adatfolyam: beolvassa az adatokat a forrásból. 
  • Kimeneti adatfolyam: adatokat ír egy célhelyre. 

Mikor érdemes a karakterfolyamot bájtfolyamon keresztül használni:

A Java nyelven a karakterek tárolása Unicode konvenciókkal történik. A karakterfolyam akkor hasznos, ha szöveges fájlokat szeretnénk feldolgozni. Ezeket a szöveges fájlokat karakterenként lehet feldolgozni. A karakter mérete általában 16 bit.

Mikor érdemes a bájtos adatfolyamot karakterfolyamon keresztül használni:

Bájt orientált bájtonként olvas. A bájtfolyam nyers adatok, például bináris fájlok feldolgozására alkalmas.

Főbb pontok a fenti adatfolyamok bármelyikének használata és kezelése során:

  • A karakterfolyam-osztályok általában Reader/Writer-re, míg a bájtfolyam-osztályok InputStream/OutputStream-re végződnek.
  • A cikkben szereplő példakódok nem pufferelt adatfolyamokat használnak, amelyek kevésbé hatékonyak. A jobb teljesítmény érdekében általában a BufferedReader/BufferedWriter (karakterfolyamok) vagy a BufferedInputStream/BufferedOutputStream (byte-folyamok) becsomagoljuk őket.
  • Használat után mindig zárja be a streameket az erőforrások felszabadítása és a hibák elkerülése érdekében.
  • Előfordulhat, hogy a fenti kódok nem futnak az online fordítókban, mivel előfordulhat, hogy nem léteznek fájlok.

Karakterfolyam

A Java nyelven a karakterek tárolása Unicode konvenciókkal történik. A karakterfolyam automatikusan lehetővé teszi számunkra, hogy karakterenként olvassuk/írjuk az adatokat. Például a FileReader és a FileWriter karakterfolyamok, amelyek a forrásból való olvasáshoz és a célba való íráshoz használhatók.

non_unicode_bytesKarakterfolyamok

Példa

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

Kimenet:

Karakterenként ír tartalmat a célfájlba

A program sikeresen végrehajtva

Byte Stream

A Java bájtfolyama olyan adatfolyam, amely kezeli a nyers 8 bites bináris adatok be- és kimenetét. Főleg nem szöveges adatok, például képek audio-videó vagy bármilyen bináris fájl olvasására és írására használják. Például FileInputStream a forrásból való olvasáshoz, a FileOutputStream pedig a célba való íráshoz használatos.

Példa:

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

Kimenet:

A program sikeresen végrehajtva

A karakterfolyam és a bájtfolyam különbségei

Vonatkozás Karakterfolyam Byte Stream
Kezelt adattípus 16 bites Unicode karakterek (szöveg) 8 bites nyers adat (bináris)
Az órák azzal érnek véget Olvasó/író InputStream / OutputStream
Alkalmas Szöveges fájlok Unicode adatok Képek audio-videó bináris fájlok
Átalakítás A bájtokat automatikusan karakterekké alakítja A konverzió nem működik nyers bájtokkal
Példák FileReader FileWriter FileInputStream FileOutputStream

Kapcsolódó cikk

  • Java IO - Bemenet/kimenet Java-ban példákkal