/ / Java: InputStream. Input Streams

Java: InputStream. Input Streams

Java, ligesom mange moderne sprogprogrammering, understøtter implementeringen af ​​dataindtastningsstrømme. I Java er InputStream basen klasse for byte streams. Denne klasse er abstrakt, det vil sige i processen af ​​programmet kan vi ikke skabe sin instans. Men i io-pakken er der mange klasser, der arver og udvider InputStream's funktionalitet. For at bruge denne klasse i din kode skal du importere den fra pakken java.io.InputStream. Herefter ser vi på den grundlæggende funktionalitet, der leveres af InputStream-klassen, samt de vigtigste klasser, der implementerer den.

Metoder til InputStream-klassen

Før du fortsætter til en detaljeret undersøgelsemetoder i InputStream-klassen, bør det nævnes, at det implementerer Closeable og AutoCloseable-grænsefladerne. Closeable-grænsefladen fortæller os, at når du lukker tråden, skal den lukkes. Dette gøres ved at bruge metoden close (). Da de fleste af InputStream klassemetoder i tilfælde af fejl genererer en undtagelse typen IOException, alle operationer, der kræves til at gennemføre en prøve blok og en fremgangsmåde tæt () endelig gøre en enhed, således at den udløses afhængigt af resultatet af operationen til at prøve legeme.

Den AutoCloseable-grænseflade reducerer betydeligtmængden af ​​teknisk kode, fordi den tillader, at close () -metoden fungerer automatisk og ikke tilføjer en endelig blok til din kode. Hvis du bruger en syvende eller nyere version af Java, kan du sætte InputStream i en såkaldt prøve med ressourcer, der tager sig af alle afsluttende operationer.

java inputstream til streng

Overvej de vigtigste metoder i InputStream-klassen:

  • int tilgængelig () - Returnerer antallet af byte, der er tilgængelige til læsning;
  • int read () - tager fra ressourcen den aktuelle byte og returnerer den i integerrepræsentationen; Hvis alle bytes læses, returneres -1;
  • int read (byte [] buffer) - læser de tilgængelige byte ibufferen er en byte array type (antal bytes, der læses buffer lig med den angivne størrelse og returnerer antallet af bytes, der læses lykkedes, og hvis alle tilgængelige bytes læse, returnerer -1);
  • int læses (byte [] buffer, int offset, intantal bytes) - Overbelastning af den foregående metode gør det samme, men med den position, der er angivet i "offset" og læses så mange som angivet i "antal bytes";
  • Langt springe (langt antal bytes) - springer det angivne antal byte og returnerer det faktiske antal byte.

InputStream implementeres af flere klasser, designet til at arbejde med forskellige kilder og datatyper. Arvets træ er vist nedenfor.

java inputstream

Læsning af filer

Byte strømmer til læsning af information fra filerimplementeret af FileInputStream-klassen. For at åbne en fil for at læse bytes, er det nok at oprette en forekomst af denne klasse, idet filen overføres til konstruktøren som et argument. Hvis filen med det angivne navn ikke findes, vil en undtagelse af typen FileNotFoundException blive kastet.

I tilfælde af et vellykket åbent en fil, der arbejder med dem udført efter de metoder der er beskrevet ovenfor, som er efterfølgeren FileInputStream InputStream.

Læsning af primitive datatyper

Det foregående eksempel beskrev arbejdet medbyte værdier, der kan tolkes som symboler. Men hvad nu hvis vi skal læse et helt tal, fraktioneret eller logisk værdi? For at gøre dette, er Java InputStream indirekte udvidet af DataInputStream-klassen. Denne klasse er wrapper til InputStream, som sendes til den, når den er oprettet som et argument til konstruktøren. Denne form for stream læser dataene i binær form.

DataInputStream implementerer også DataInput-grænsefladen og dens metoder til at læse primitive datatyper. Nedenfor er en liste over disse metoder.

java io inputstream

Navnene på metoderne taler for sig selv - hver af dem er beregnet til at læse en bestemt type data.

Buffered input stream

Den bufferede data læser strøm er implementeretKlassen BufferedInputStream i Java. InputStream er pakket ind i denne klasse. Denne klasse supplerer strømmen med en buffer, som giver dig mulighed for at læse mere end en byte ad gangen. Dette gør det muligt at forbedre operationens ydeevne betydeligt. BufferedInputStream er en indirekte efterkommer af InputStream og arver derfor alle ovenstående metoder.

Denne klasse har to konstruktører:

  • BufferedInputStream (InputStream input stream);
  • BufferedInputStream (InputStream input stream, int buffer størrelse)

Underskrift designerne kan forstås, at det første sætter standard buffer størrelse, og i det andet er det muligt at indstille den manuelt.

konklusion

Vi har dækket den grundlæggende implementering af InputStream. Hvis du skal konvertere de modtagne bytes til en streng, så i Java InputStream to String () er desværre ikke overbelastet, så du skal bruge specielle værktøjer, f.eks. IOUtils fra Apache Commons biblioteket.</ span </ p>

Læs mere: