logo

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:

Madhuri je rekla hajde

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_bajtovi' title=Tokovi 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:

stvaranje skripte ljuske izvršnom

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

AspektTok znakovaTok bajtova
Obrađena vrsta podataka16-bitni Unicode znakovi (tekst)8-bitni neobrađeni podaci (binarni)
Nastava završava sČitatelj/pisacInputStream / OutputStream
Prikladno zaTekstualne datoteke Unicode podatakaSlike audio video binarne datoteke
PretvorbaAutomatski pretvara bajtove u znakoveNijedna konverzija ne radi s neobrađenim bajtovima
PrimjeriFileReader FileWriterFileInputStream FileOutputStream

Povezani članak

  • Java IO - Ulaz/Izlaz u Javi s primjerima