Java, ligesom mange moderne sprogprogrammering, understøtter implementeringen af datainputstrømme. I Java er InputStream basisklassen for byte-streams. Denne klasse er abstrakt, det vil sige, mens vi kører, kan vi ikke oprette en forekomst af den. Imidlertid indeholder io-pakken mange klasser, der arver og udvider funktionaliteten af InputStream. For at bruge denne klasse i din kode skal du importere den fra pakken java.io.InputStream. Dernæst ser vi på den grundlæggende funktionalitet, som InputStream-klassen giver, såvel som de hovedklasser, der implementerer den.
Før du starter en detaljeret undersøgelsemetoder i InputStream-klassen, skal det nævnes, at det implementerer de grænseflader, der kan lukkes og lukkes automatisk. Den lukkede grænseflade fortæller os, at vi skal lukke den, når vi er færdige med at arbejde med tråden. Dette gøres ved hjælp af close () -metoden. Da de fleste af metoderne i InputStream-klassen kaster en IOException i tilfælde af en fejl, skal alle operationer udføres i prøveblokken, og metoden close () skal placeres i den endelige blok, så den fungerer uanset resultatet af arbejdet i prøvekroppen.
Den automatisk lukkede grænseflade reduceres kraftigtmængden af teknisk kode, fordi den gør det muligt for close () -metoden at fyre automatisk og ikke tilføje en endelig blok til din kode. Hvis du bruger den syvende eller nyere version af Java, kan InputStream placeres i en såkaldt prøve med ressourcer, der tager sig af alle operationer til lukning af streams.
Lad os se på de vigtigste metoder i InputStream-klassen:
InputStream er implementeret af flere klasser designet til at arbejde med forskellige kilder og datatyper. Nedenfor er arvetræet.
Byte stream til læsning af information fra filerimplementeret af FileInputStream-klassen. For at åbne en fil til læsning af bytes, er det nok at oprette en forekomst af denne klasse og videregive dens filnavn som et argument til dens konstruktør. Hvis filen med det passerede navn ikke findes, kastes en undtagelse af typen FileNotFoundException.
Hvis filen åbnes med succes, udføres arbejde med den ved hjælp af metoderne beskrevet ovenfor, da FileInputStream arver fra InputStream.
Det foregående eksempel beskrev arbejdet medbyteværdier, der kan fortolkes som tegn. Men hvad nu hvis vi har brug for at læse en heltal, brøk eller boolsk værdi? For at gøre dette udvides InputStream i Java indirekte af DataInputStream-klassen. Denne klasse er en indpakning til en InputStream, der sendes til den, når den oprettes som et konstruktørargument. Denne form for strøm læser data i binær form.
DataInputStream implementerer også DataInput-grænsefladen og dens metoder til læsning af primitive datatyper. Nedenfor er en liste over disse metoder.
Metodenavne taler for sig selv - hver af dem er designet til at læse en bestemt type data.
En bufret læst datastrøm er implementeretBufferedInputStream-klassen i Java. InputStream er pakket med denne klasse. Denne klasse supplerer strømmen med en buffer, som giver dig mulighed for at læse ikke én, men flere byte samtidigt. Dette gør det muligt at øge produktiviteten af operationen markant. BufferedInputStream er en indirekte efterkommer af InputStream og arver derfor alle ovennævnte metoder.
Denne klasse har to konstruktører:
Fra konstruktørernes signaturer kan du forstå, at den første indstiller standardbufferstørrelsen, mens den anden har evnen til at indstille den manuelt.
Vi har dækket de vigtigste implementeringer af InputStream. Hvis du har brug for at konvertere de modtagne bytes til en streng, så i Java InputStream to String () er desværre ikke overbelastet, så du skal bruge specielle hjælpeprogrammer til dette, for eksempel IOUtils fra Apache Commons-biblioteket.