Prúd je nepretržitý tok údajov. V Java sa I/O prúdy používajú na čítanie zo vstupných zdrojov alebo zápis do výstupných cieľov, ako sú súbory. Poskytujú spôsob sekvenčného prístupu k údajom. Balík java.io obsahuje triedy na spracovanie bajtových prúdov a prúdov znakov a tiež na konverziu medzi nimi.
- Vstupný stream: načítava údaje zo zdroja.
- Výstupný tok: zapisuje údaje do cieľa.
Kedy použiť tok znakov cez tok bajtov:
V jazyku Java sú znaky uložené pomocou konvencií Unicode. Znakový prúd je užitočný, keď chceme spracovať textové súbory. Tieto textové súbory je možné spracovať znak po znaku. Veľkosť znaku je zvyčajne 16 bitov.
Kedy použiť streamovanie bajtov cez stream znakov:
Bajtovo orientované číta bajt po bajte. Bytový prúd je vhodný na spracovanie nespracovaných údajov, ako sú binárne súbory.
Kľúčové body pri používaní a zaobchádzaní s ktorýmkoľvek z vyššie uvedených prúdov:
- Triedy toku znakov zvyčajne končia na Reader/Writer, zatiaľ čo triedy bajtových tokov končia na InputStream/OutputStream.
- Príklady kódov v tomto článku používajú toky bez vyrovnávacej pamäte, ktoré sú menej efektívne. Pre lepší výkon ich bežne zabalíme do BufferedReader/BufferedWriter (toky znakov) alebo BufferedInputStream/BufferedOutputStream (bajtové toky).
- Po použití vždy zatvorte prúdy, aby ste uvoľnili zdroje a zabránili chybám.
- Vyššie uvedené kódy nemusia bežať v online kompilátoroch, pretože súbory nemusia existovať.
Prúd postáv
V jazyku Java sú znaky uložené pomocou konvencií Unicode. Znakový prúd nám automaticky umožňuje čítať/zapisovať údaje znak po znaku. Napríklad FileReader a FileWriter sú toky znakov, ktoré sa používajú na čítanie zo zdroja a zápis do cieľa.
Prúdy postávPríklad
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(); } } }
výstup:
Zapisuje obsah do cieľového súboru znak po znaku
Program úspešne spustený
Byte Stream
Bytový tok v jazyku Java je tok, ktorý spracováva vstup a výstup nespracovaných 8-bitových binárnych údajov. Používa sa hlavne na čítanie a zápis netextových údajov, ako sú obrázky, audio video alebo akýkoľvek binárny súbor. Napríklad FileInputStream sa používa na čítanie zo zdroja a FileOutputStream na zápis do cieľa.
Príklad:
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(); } } }
výstup:
Program úspešne spustený
Rozdiely medzi prúdom postáv a prúdom bajtov
| Aspekt | Prúd postáv | Byte Stream |
|---|---|---|
| Spracovávaný typ údajov | 16-bitové znaky Unicode (text) | 8-bitové nespracované dáta (binárne) |
| Triedy končia o | Čitateľ / Spisovateľ | InputStream / OutputStream |
| Vhodné pre | Textové súbory s údajmi Unicode | Obrázky audio a video binárne súbory |
| Konverzia | Automaticky prevádza bajty na znaky | Žiadna konverzia nefunguje s nespracovanými bajtmi |
| Príklady | FileReader FileWriter | FileInputStream FileOutputStream |
Súvisiaci článok
- Java IO - Vstup/Výstup v jazyku Java s príkladmi