logo

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.

mi az a címtárbeküldés

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_bytes' title=Karakterfolyamok

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ásKarakterfolyamByte Stream
Kezelt adattípus16 bites Unicode karakterek (szöveg)8 bites nyers adat (bináris)
Az órák azzal érnek végetOlvasó/íróInputStream / OutputStream
AlkalmasSzöveges fájlok Unicode adatokKépek audio-videó bináris fájlok
ÁtalakításA bájtokat automatikusan karakterekké alakítjaA konverzió nem működik nyers bájtokkal
PéldákFileReader FileWriterFileInputStream FileOutputStream

Kapcsolódó cikk

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