Java, som mange moderne språkprogrammering, støtter implementering av datainngangsstrømmer. I Java er en InputStream baseklasse for bytestrømmer. Denne klassen er abstrakt, det vil si at i prosessen med programmet kan vi ikke lage en forekomst av den. Imidlertid har io-pakken mange klasser som arver og utvider funksjonaliteten til InputStream. For å bruke denne klassen i koden, må du importere den fra java.io.InputStream-pakken. Deretter ser vi på den grunnleggende funksjonaliteten som InputStream-klassen gir, så vel som hovedklassene som implementerer den.
Før du begynner på en detaljert studiemetodene i klassen InputStream, skal det nevnes at den implementerer grensesnittene som kan lukkes og AutoCloseable. Det lukkbare grensesnittet forteller oss at når du er ferdig med å jobbe med en strøm, må du lukke den. Dette gjøres ved å bruke den nære () metoden. Siden de fleste metodene i klassen InputStream kaster en IOException i tilfelle en feil, må alle operasjoner utføres i prøveblokken, og den nære () metoden må settes i sluttblokken slik at den fungerer uavhengig av resultatet av arbeidet i prøvekroppen.
AutoCloseable grensesnitt reduserer betydeligteknisk kode, fordi den lar den nære () metoden skyte automatisk og ikke legge til en endelig blokkering av koden. Hvis du bruker den syvende eller senere versjonen av Java, kan InputStream plasseres i det såkalte try with ressursene, som tar seg av alle operasjonene for å lukke trådene.
Vurder de grunnleggende metodene for klassen InputStream:
InputStream implementeres av flere klasser designet for å arbeide med forskjellige kilder og datatyper. Nedenfor er arvetreet.
Bytestrøm for å lese informasjon fra filerimplementert av FileInputStream-klassen. For å åpne en fil for å lese byte, er det nok å opprette en forekomst av denne klassen, og overføre navnet til konstruktøren som et argument. Hvis filen med det passerte navnet ikke eksisterer, kastes et unntak av typen FileNotFoundException.
I tilfelle en vellykket filåpning, utføres arbeidet med den ved å bruke metodene beskrevet over, siden FileInputStream er en arv av InputStream.
Det forrige eksemplet beskrev arbeidet medbyteverdier som kan tolkes som tegn. Men hva hvis vi trenger å lese et heltall, brøk eller logisk verdi? For å gjøre dette, i Java, utvides en InputStream indirekte av DataInputStream-klassen. Denne klassen er en innpakning for en InputStream, som sendes til den når den opprettes som et argument til konstruktøren. Denne typen strøm leser data i binær form.
DataInputStream implementerer også DataInput-grensesnittet og dets metoder for å lese primitive datatyper. Følgende er en liste over disse metodene.
Navnene på metodene taler for seg selv - hver av dem er designet for å lese en viss type data.
Den buffrede datalesestrømmen implementeres.klassen BufferedInputStream i Java. En InputStream er innpakket av denne klassen. Denne klassen supplerer strømmen med en buffer, som lar deg lese samtidig ikke en, men flere byte. Dette gjør det mulig å øke produktiviteten til operasjonen betydelig. BufferedInputStream er en indirekte etterkommer av InputStream og arver følgelig alle de ovennevnte metodene.
Denne klassen har to konstruktører:
Fra signaturen til konstruktørene kan du forstå at den første angir standardbufferstørrelse, og den andre har muligheten til å stille den inn manuelt.
Vi undersøkte de viktigste implementeringene av InputStream. Hvis du trenger å konvertere de mottatte byte til en streng, deretter inn Dessverre er Java InputStream to String () ikke overbelastet, så du må bruke spesielle verktøy, for eksempel IOUtils fra Apache Commons-biblioteket.