Java: InputStream. Fluxuri de intrare

Java, ca multe limbi moderne de programare, sprijină implementarea fluxurilor de intrare de date. În Java, InputStream este clasa de bază pentru fluxurile de octeți. Această clasă este abstractă, adică în procesul programului nu putem crea instanța. Cu toate acestea, în pachetul io, există multe clase care moștenesc și extind funcționalitatea InputStream. Pentru a utiliza această clasă în codul dvs., trebuie să o importați din pachetul java.io.InputStream. Apoi, vom analiza funcționalitatea de bază oferită de clasa InputStream, precum și principalele clase care o implementează.

Metode pentru clasa InputStream

Înainte de a trece la un studiu detaliat al metodelor din clasa InputStream, trebuie menționat faptul că implementează interfețele Închis și Auto închide. Interfața Closeable ne spune că la închiderea firului trebuie să fie închis. Aceasta se face folosind metoda close (). Deoarece cele mai multe dintre metodele clasei InputStream în cazul unei erori generează un tip de excepție IOException, toate operațiunile necesare pentru a efectua un bloc try și o strânsă metodă () în cele din urmă face o unitate, astfel încât acesta este declanșat în funcție de rezultatul de funcționare pentru a încerca corp.

Interfața AutoCloseable reduce semnificativ cantitatea de cod de întreținere, deoarece permite în mod automat aproape metoda de lucru () și nu adăugați la codul de a bloca în cele din urmă. Dacă utilizați versiunea a șaptea sau mai târziu de Java, un InputStream poate fi plasat în așa-numitele încercați cu resurse care toate operațiunile pentru a închide fluxul preia.

intrare java la șir

Luați în considerare principalele metode ale clasei InputStream:

  • int available () - Returnează numărul de octeți disponibili pentru citire;
  • int read () - ia de la resursă octetul curent și îl returnează în reprezentarea întregului - dacă toate octeții sunt citiți, returnează -1;
  • int read (byte [] buffer) - Citește octeți în disponibil tamponul menționat sub forma unui tip de matrice octet (numărul de octeți citit este egal cu o mărime predeterminată bufera- returnează numărul de octeți care ar putea prochitat- dacă toate octeți disponibile citit, returnează -1);
  • int citit (buffer octet, int offset, int număr de octeți) - suprasarcină a metodei anterioare, face același lucru, dar cu poziția specificată în "offset" și citește cât mai multe specificate în "numărul de octeți";
  • săriți lung (număr lung de octeți) - sări peste numărul specificat de octeți și returnează numărul real de octeți.

InputStream este implementat de mai multe clase, conceput pentru a lucra cu diferite surse și tipuri de date. Pomul mostenirii este prezentat mai jos.

intrare java

Citirea fișierelor

Fluxul de octeți pentru citirea informațiilor din fișiere este implementat de clasa FileInputStream. Pentru a deschide un fișier pentru citirea octeților, este suficient să creați o instanță a acestei clase, trecând numele de fișier la constructor ca argument. Dacă fișierul cu numele dat nu există, va fi aruncată o excepție de tip FileNotFoundException.

În cazul unei deschideri reușite a unui fișier, lucrul cu acesta se realizează utilizând metodele descrise mai sus, deoarece FileInputStream este succesorul InputStream.

Citirea tipurilor de date primitive



Exemplul anterior descris de lucru cu valorile byte care pot fi interpretate ca simboluri. Dar dacă avem nevoie să citim o valoare întreagă, fracțională sau logică? Pentru aceasta, Java InputStream este extins indirect de clasa DataInputStream. Această clasă este wrapper-ul pentru InputStream, care este trecut la el atunci când este creat ca un argument pentru constructor. Acest tip de flux citește datele în formă binară.

DataInputStream implementează, de asemenea, interfața DataInput și metodele sale de citire a tipurilor de date primitive. Mai jos este o listă a acestor metode.

java io inputstream

Numele metodelor vorbesc de la sine - fiecare dintre acestea este destinat citirii unui anumit tip de date.

Buffered stream de intrare

Tensiunea de citire a datelor tampon este implementată de clasa BufferedInputStream în Java. Intrarea de intrare este înfășurată în această clasă. Această clasă completează fluxul cu un buffer, ceea ce vă permite să citiți mai mult de un octet la un moment dat. Acest lucru face posibilă îmbunătățirea semnificativă a performanței operației. BufferedInputStream este un descendent indirect al InputStream și, în consecință, moștenește toate metodele de mai sus.

Această clasă are doi constructori:

  • BufferedInputStream (flux de intrare InputStream);
  • BufferedInputStream (fluxul de intrare InputStream, dimensiunea buffer-ului int)

Din semnătura constructorilor, puteți înțelege că prima stabilește dimensiunea buffer-ului în mod prestabilit, iar în al doilea este posibilă setarea manuală.

concluzie

Am acoperit implementarea de bază a InputStream. Dacă trebuie să convertiți octeții recepționați într-un șir, atunci în Java InputStream to String (), din păcate, nu este supraîncărcat, deci pentru aceasta va trebui să utilizați utilitare speciale, de exemplu IOUtils din biblioteca Apache Commons.

Distribuiți pe rețelele sociale:

înrudit
Cum se instalează Java pe Windows 7Cum se instalează Java pe Windows 7
Primul program Java este Hello WorldPrimul program Java este Hello World
Limbaj de programare JavaLimbaj de programare Java
Țigarete Java: descriere și tipuriȚigarete Java: descriere și tipuri
Mijloacele Java de șiruri de caractere. Sortarea unui matrice în Java. Dispozitiv Java de două…Mijloacele Java de șiruri de caractere. Sortarea unui matrice în Java. Dispozitiv Java de două…
Java: expresii regulate, caractere specialeJava: expresii regulate, caractere speciale
Encapsularea este ceea ce? Încapsulare în programareEncapsularea este ceea ce? Încapsulare în programare
Programare: Java. Tipuri de dateProgramare: Java. Tipuri de date
Clasă și metodă abstractă: descriere, caracteristici și caracteristici. Care este diferența dintre…Clasă și metodă abstractă: descriere, caracteristici și caracteristici. Care este diferența dintre…
Mediu de dezvoltare integrat JavaMediu de dezvoltare integrat Java
» » Java: InputStream. Fluxuri de intrare