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.

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.

java ulazni tok na niz

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.

ulazni java

Č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.

java i ulazni

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.

Dijelite na društvenim mrežama:

Povezan
Kako instalirati Java na Windows 7Kako instalirati Java na Windows 7
Kako ažurirati Java na Linux i Windows operativnim sustavima?Kako ažurirati Java na Linux i Windows operativnim sustavima?
Prvi Java program je Hello WorldPrvi Java program je Hello World
Cigare `Java`: opis i vrsteCigare `Java`: opis i vrste
Java polja žica. Razvrstavanje polja u Java. Dvodimenzionalni Java rasporedJava polja žica. Razvrstavanje polja u Java. Dvodimenzionalni Java raspored
Java: regularni izrazi, posebni znakoviJava: regularni izrazi, posebni znakovi
Što je to encapsulation? Inkapsuliranje u programiranjuŠto je to encapsulation? Inkapsuliranje u programiranju
Programiranje: Java. Vrste podatakaProgramiranje: Java. Vrste podataka
Sažetak klasa i metoda: opis, karakteristike i značajke. Koja je razlika između apstraktne klase i…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 nije instaliran: što da radim? Kako instalirati na Ubuntu?
» » Java: InputStream. Ulazni tokovi
LiveInternet