Java: InputStream. Ulazni tokovi
Java, kao i mnogi moderni programski jezici, podržava implementaciju tokova unosa podataka. U Java, InputStream je osnovna klasa za streamove bajta. Ova je klasa apstraktna, tj. U procesu programa ne možemo stvoriti svoj primjer. Međutim, u io paketu, postoje mnoge klase koje nasljeđuju i proširuju funkcionalnost InputStreama. Da biste koristili ovaj razred u kodu, morate ga uvesti iz paketa java.io.InputStream. Zatim ćemo pogledati osnovne funkcije koje nudi klasa InputStream, kao i glavne klase koje ga implementiraju.
sadržaj
Metode za klasu InputStream
Prije prelaska na detaljnom proučavanju metoda InputStream klase, treba napomenuti da implementira mogućnošću zatvaranja i AutoCloseable sučelja. Sučelje Zatvoreno nam govori da pri zatvaranju niti mora biti zatvoren. To je učinjeno pomoću metode close (). Budući da većina InputStream metoda klase u slučaju pogreške generira tipa iznimka IOException, sve operacije potrebne za obavljanje pokušati blok i metode izbliza () na kraju čine jednu cjelinu tako da se aktivira ovisno o rezultatu rada pokušati tijelo.
AutoCloseable sučelje značajno smanjuje količinu tehničkog koda, jer dopušta da se (close) metoda automatski aktivira i ne doda konačno blok koda. Ako koristite sedmu ili noviju inačicu Java, InputStream možete staviti u tzv. Probati s resursima koji će voditi brigu o svim postupcima zatvaranja.
Razmotriti glavne metode InputStream klase:
- int available () - Vraća broj bajtova dostupnih za čitanje;
- int read () - izvodi iz resursa trenutni bajt i vraća ga u cjelobrojnom prikazu - ako se svi bajtovi čitaju, vraća -1;
- int čitanje (byte [] pufer) - čita bajtova dostupan u spomenutom puferu u obliku tipa bajt poljem (bajtovi čitanje jednaka određenu veličinu bufera- vraća broj bajtova koje mogu prochitat- da svi dostupni bajtova čitanje, vraća 1);
- int čitanje (byte [] buffer, int offset, int broj bajtova) - preopterećenje prethodne metode, radi isto, ali sa položajem navedenim u "offset" i čita koliko je navedeno u "broju bajtova";
- dugi preskak (dugački broj bajtova) - preskače određeni broj bajtova i vraća stvarni broj bajtova.
InputStream provodi više klasa, dizajniranih za rad s različitim izvorima i vrstama podataka. Stablo baštine prikazano je dolje.
Čitanje datoteka
Stream bajtova za čitanje informacija iz datoteka provodi se pomoću FileInputStream klase. Da biste otvorili datoteku za čitanje bajtova, dovoljno je stvoriti primjer ove klase, dajući naziv datoteke konstruktoru kao argument. Ako datoteka s navedenim nazivom ne postoji, izuzeti će se vrsta datoteke FileNotFoundException.
U slučaju uspješnog otvaranja datoteke, rad s njom vrši se pomoću gore opisanih metoda, budući da je FileInputStream nasljednik InputStream-a.
Čitanje primitivnih vrsta podataka
Prethodni primjer opisuje rad s vrijednostima bajtova koji se mogu interpretirati kao simboli. Ali što ako trebamo pročitati cjelobrojnu, frakcijsku ili logičku vrijednost? Da biste to učinili, u Java InputStreamu indirektno se proširuje klasom DataInputStream. Ovaj je klasi omot za InputStream, koji mu se prenosi kada je stvoren kao argument za konstruktora. Ova vrsta streama čita podatke u binarnom obliku.
DataInputStream također implementira DataInput sučelje i njegove metode za čitanje primitivnih vrsta podataka. Ispod je popis tih metoda.
Nazivi metoda govore sami - svaki od njih je namijenjen za čitanje određene vrste podataka.
Buffered ulazni tok
Bušotirani podatkovni tok čitanja provodi BufferedInputStream klasa u Javi. InputStream je zamotan u ovaj razred. Ova klasa nadopunjuje protok s međuspremnikom koji vam omogućuje da pročitate više od jednog bajta istodobno. To omogućuje značajno poboljšanje performansi operacije. BufferedInputStream je neizravni potomak InputStreama i prema tome nasljeđuje sve gore navedene metode.
Ovaj razred ima dva konstruktora:
- BufferedInputStream (InputStream ulazni stream);
- BufferedInputStream (InputStream ulazni stream, int veličina međuspremnika)
Od potpisa konstruktora, možete shvatiti da prvi postavlja veličinu međuspremnika prema zadanim postavkama, au drugoj je moguće postaviti ručno.
zaključak
Obuhvaćali smo osnovnu implementaciju InputStreama. Ako trebate pretvoriti primljene bajtove u niz, a zatim u Java InputStream da String (), na žalost, nije preopterećen, tako da će morati koristiti posebne alate, npr IOUtils od Apache Commons knjižnice.
- Java: iznimke i njihovo rukovanje
- Kako instalirati Java na Windows 7
- Kako ažurirati Java na Linux i Windows operativnim sustavima?
- Prvi Java program je Hello World
- Cigare `Java`: opis i vrste
- Java polja žica. Razvrstavanje polja u Java. Dvodimenzionalni Java raspored
- Java: regularni izrazi, posebni znakovi
- Što je to encapsulation? Inkapsuliranje u programiranju
- Programiranje: Java. Vrste podataka
- Sažetak klasa i metoda: opis, karakteristike i značajke. Koja je razlika između apstraktne klase i…
- Java nije instaliran: što da radim? Kako instalirati na Ubuntu?
- Java Generics: Opis i metode
- BigInteger Java: radi s velikim brojem
- Java raspored. Rasporedi u Javi. Java za početnike
- Java: rad s datotekama - pisanje, čitanje i brisanje
- Iz memorije Minecraft: što učiniti i kako se riješiti ove pogreške
- Elementi Java modela objekta: sažetak klase, sučelje
- Kako omogućiti Java u Firefoxu za probleme s zaključavanjem
- Kako ukloniti java s računala? Lako je!
- Java tokovi: stvaranje i dovršavanje
- Kako pisati u datoteku u Javi