Simbolių srautas vs baitų srautas Java
Srautas yra nenutrūkstamas duomenų srautas. Java I/O srautai naudojami nuskaityti iš įvesties šaltinių arba rašyti į išvesties paskirties vietas, pvz., failus. Jie suteikia galimybę nuosekliai pasiekti duomenis. „Java.io“ pakete yra klasės, skirtos baitų srautams ir simbolių srautams tvarkyti, taip pat konvertuoti tarp jų.
- Įvesties srautas: nuskaito duomenis iš šaltinio.
- Išvesties srautas: įrašo duomenis į paskirties vietą.
Kada naudoti simbolių srautą per baitų srautą:
Java simboliai saugomi naudojant Unicode konvencijas. Simbolių srautas yra naudingas, kai norime apdoroti tekstinius failus. Šiuos tekstinius failus galima apdoroti po simbolio. Simbolių dydis paprastai yra 16 bitų.
Kada naudoti baitų srautą per simbolių srautą:
Pagal baitą skaitoma baitas po baito. Baitų srautas tinka neapdorotiems duomenims, pvz., dvejetainiams failams, apdoroti.
Pagrindiniai punktai naudojant ir dirbant su bet kuriuo iš aukščiau išvardytų srautų:
- Simbolių srauto klasės paprastai baigiasi „Reader / Writer“, o baitų srauto klasės baigiasi „InputStream“ / „OutputStream“.
- Šiame straipsnyje pateiktuose kodų pavyzdžiuose naudojami nebuferiniai srautai, kurie yra mažiau veiksmingi. Siekdami geresnio našumo, dažniausiai juos apvyniojame BufferedReader/BufferedWriter (simbolių srautai) arba BufferedInputStream/BufferedOutputStream (baitų srautai).
- Visada uždarykite srautus po naudojimo, kad atlaisvintumėte išteklių ir išvengtumėte klaidų.
- Pirmiau minėti kodai gali neveikti internetiniuose kompiliatoriuose, nes failų gali nebūti.
Simbolių srautas
Java simboliai saugomi naudojant Unicode konvencijas. Simbolių srautas automatiškai leidžia mums skaityti / rašyti duomenis po simbolio. Pavyzdžiui, „FileReader“ ir „FileWriter“ yra simbolių srautai, naudojami skaityti iš šaltinio ir rašyti į paskirties vietą.
Simbolių srautai Pavyzdys
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 (); } } }
Išvestis:
Rašo turinį į tikslinį failą simbolis po simbolio
Programa sėkmingai įvykdyta
Baitų srautas
„Java“ baitų srautas yra srautas, tvarkantis neapdorotų 8 bitų dvejetainių duomenų įvestį ir išvestį. Jis daugiausia naudojamas netekstiniams duomenims, pvz., vaizdams, garso ir vaizdo įrašams arba bet kokiam dvejetainiam failui, skaityti ir rašyti. Pavyzdžiui FileInputStream naudojamas skaityti iš šaltinio ir FileOutputStream rašyti į paskirties vietą.
Pavyzdys:
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 (); } } }
Išvestis:
Programa sėkmingai įvykdyta
Simbolių srauto ir baitų srauto skirtumai
| Aspektas | Simbolių srautas | Baitų srautas |
|---|---|---|
| Duomenų tipas tvarkomas | 16 bitų unikodo simboliai (tekstas) | 8 bitų neapdoroti duomenys (dvejetainiai) |
| Pamokos baigiasi | Skaitytojas / Rašytojas | InputStream / OutputStream |
| Tinka | Tekstiniai failai Unicode duomenys | Vaizdai garso ir vaizdo dvejetainiai failai |
| Konversija | Automatiškai konvertuoja baitus į simbolius | Joks konvertavimas neveikia naudojant neapdorotus baitus |
| Pavyzdžiai | FileReader FileWriter | FileInputStream FileOutputStream |
Susijęs straipsnis
- Java IO – Java įvestis/išvestis su pavyzdžiais