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.
Tokovi znakovaPrimjer
Javaimport 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:
Javaimport 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
| Aspekt | Tok znakova | Tok bajtova |
|---|---|---|
| Obrađena vrsta podataka | 16-bitni Unicode znakovi (tekst) | 8-bitni neobrađeni podaci (binarni) |
| Nastava završava s | Čitatelj/pisac | InputStream / OutputStream |
| Prikladno za | Tekstualne datoteke Unicode podataka | Slike audio video binarne datoteke |
| Pretvorba | Automatski pretvara bajtove u znakove | Nijedna konverzija ne radi s neobrađenim bajtovima |
| Primjeri | FileReader FileWriter | FileInputStream FileOutputStream |
Povezani članak
- Java IO - Ulaz/Izlaz u Javi s primjerima