RačunalaProgramiranje

Java: InputStream. ulazni tokovi

Java, kao i mnogi moderni programski jezici, podržava implementaciju ulaznih podataka tokova. U Javi InputStream je klasa osnova za bajt tokove. Ova klasa je apstraktna, koja je, u toku programa ne možemo stvoriti instancu to. Međutim, io paket ima skup klasa koje nasljeđuju i proširiti funkcionalnost InputStream. Da biste koristili ovu klasu u kodu, mora biti uvezena iz java.io.InputStream paketa. Dalje, smatramo osnovne funkcionalnosti koje pruža InputStream klase, a glavni klase koje ga provede.

InputStream metode klase

Prije prelaska na detaljnu studiju od metoda InputStream klase, treba napomenuti da se implementira Closeable i AutoCloseable interfejsa. Sučelje Closeable nam govori da po završetku rada sa protokom mora nužno biti zatvoren. To se radi metodom close (). Pošto je većina InputStream metoda klase u slučaju greške stvara tip izuzetak IOException, sve potrebne za obavljanje try bloku i metoda close () konačno napraviti jedinicu tako da se aktivira u zavisnosti od rezultata rada pokušati tijelo operacija.

AutoCloseable sučelje značajno smanjuje količina održavanja koda, jer dopušta close () način rada automatski i ne dodati u svoj kod konačno blokirati. Ako koristite sedmi ili noviju verziju Java, što je InputStream mogu staviti u tzv Pokušajte sa resursima koji sve operacije za zatvaranje protoka preuzima.

Uzmite u obzir osnovne metode InputStream klase:

  • Int na raspolaganju () - vraća čitanje broj bajtova;
  • Int čitati () - uzima trenutni bajt resursa i vraća cijeli broj zastupljenost; ako su svi bajtova čitanje, -1 se vraća;
  • int pročitati (byte [] buffer) - Čita bajtova dostupan u navedenom tampon u obliku tipa niz bajtova (broj bajtova bafer jednaka veličini specificirano i vraća broj bajtova pročitajte uspjeli i ako sve dostupne bajtova čitati, -1 vraća);
  • int pročitati (byte [] tampon, int offset, int broj bajtova) - preopterećenja prethodne metode, radi isto, ali sa određenom "offset" položaj i čita koliko postavljena u "broj bajtova";
  • dugo skip (dugo bajta) - broj bajtova preskače i vraća stvarni broj propuštenih.

InputStream se provodi nekoliko klasa dizajniran za rad sa različitih izvora i vrste podataka. Ispod prikazuje stablo nasljedstva.

čitanje datoteke

Bajtova za čitanje podataka iz datoteka se implementira klasu FileInputStream. Da biste otvorili datoteku za čitanje bajta, što je dovoljno da se stvori instancu klase, prolazeći svom konstruktoru ime datoteke kao argument. Ako je datoteka se prenosi na ime ne postoji, to će se baciti izuzetak tipa FileNotFoundException.

U slučaju uspješne otvorenih datoteka, rad s njima se izvodi pomoću metode opisane gore, kao što je to nasljednik FileInputStream InputStream.

Čitanje primitivni tipovi podataka

U gornjem primjeru opisuje rad sa bajt vrijednostima, što se može tumačiti kao simboli. Ali, šta ako nam treba čitati cijeli broj, frakcijski ili Boolean vrijednost? Da biste to učinili u Javi InputStream posredno proširuje klasu DataInputStream. Ova klasa je omot za InputStream, koji se prenosi da je na stvaranje kao konstruktor argument. Ova vrsta nit čita podatke u binarnom obliku.

DataInputStream također implementira DataInput interfejs i njene metode za čitanje primitivni tipovi podataka. Ispod je popis od ovih metoda.

imena metoda govore same za sebe - svaki od njih je dizajniran za čitanje određeni tip podataka.

Buffered ulazni tok

Baferovani tok čitanja podataka se ostvaruje BufferedInputStream klase u Javi. InputStream je obavijena po ovoj klasi. Ovaj razred dopunjuje tampon potok, omogućavajući vam da pročitate u isto vrijeme ne jedan, već nekoliko bajtova. To omogućava da se značajno poboljša učinak operacije. BufferedInputStream potomak InputStream je indirektan i time nasljeđuje sve metode gore navedene.

Ova klasa ima dva konstruktora:

  • BufferedInputStream (InputStream ulaznog toka);
  • BufferedInputStream (InputStream ulaznih signala, int Buffer)

Potpis dizajneri mogu se shvatiti da je prvi postavlja veličinu default tampon, au drugoj je moguće podesiti ručno.

zaključak

Pregledali smo osnovne realizaciju InputStream. Ako vam je potrebno pretvoriti primljene bajtova u string u Java InputStream na String (), na žalost, nije preopterećena, tako da će morati koristiti posebne alate, npr IOUtils od Apache Commons biblioteke.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 bs.atomiyme.com. Theme powered by WordPress.