/ / Java: InputStream. Beviteli folyamatok

Java: InputStream. Beviteli folyamatok

Java, mint sok modern nyelvprogramozás támogatja az adatbeviteli folyamatok végrehajtását. A Java-ban az InputStream a bájtfolyamok alapszintje. Ez az osztály absztrakt, azaz a program folyamatában nem tudjuk létrehozni példányát. Az io csomagban azonban számos olyan osztály létezik, amely örökölte és kiterjesztette az InputStream funkcionalitását. Ha használni szeretné ezt az osztályt a kódjához, be kell importálnia a java.io.InputStream csomagból. Ezután megnézzük az InputStream osztály alapfunkcióit, valamint a végrehajtó fő osztályokat.

Az InputStream osztály módszerei

Mielőtt részletes vizsgálatot folytatnaaz InputStream osztály módszereit, meg kell említeni, hogy implementálja a Zárható és az AutoCloseable interfészeket. A Zárható felület azt mondja, hogy a szál lezárásakor le kell zárni. Ezt a close () metódussal végezzük. Mivel az InputStream osztály legtöbb módszere hibát okoz az IOException típus kivételével, minden műveletet a próbatestben kell végrehajtani, és a close () metódust a végleges blokkhoz kell rendezni a munkaterület eredményétől függetlenül.

Az AutoCloseable felület jelentősen csökkena technikai kód összege, mivel lehetővé teszi a close () metódus automatikus működését, és nem ad meg véglegesen blokkot a kódjához. Ha a Java hetedik vagy újabb verzióját használja, akkor az InputStream egy úgynevezett erőforrással próbálkozhat, amely gondoskodik az összes zárási műveletről.

java bemenet a stringhez

Tekintsük az InputStream osztály főbb módszereit:

  • int available () - Visszaadja az olvasásra rendelkezésre álló bájtok számát;
  • int read () - az erőforrásból az aktuális byte-ot veszi és visszaadja az egész számot; ha az összes bájtot leolvassuk, akkor a -1 értéket kapjuk;
  • int olvasott (byte [] puffer) - beolvassa a rendelkezésre álló bájtokatspecifikus puffer, mint egy tömb típusú byte (az olvasott bájtok száma megegyezik a megadott puffer méretével, az elolvasott bájtok számát adja vissza, ha minden rendelkezésre álló bájtot elolvassunk, visszatérünk -1);
  • int olvasott (byte [] puffer, int offset, intbájtok száma) - az előző módszer túlterheltsége ugyanaz, de az "offset" -ben jelzett pozícióval és a "bájtok száma" pontban meghatározottak szerint;
  • hosszú átugrás (hosszú bájtok száma) - a meghatározott számú bájtra ugrik, és visszaadja a bájtok tényleges számát.

Az InputStream-ot több osztály hajtja végre, amelyek különböző forrásokkal és adattípusokkal dolgoznak. Az örökség fája az alábbiakban található.

java bemenet

Fájlok olvasása

Bájtfolyam a fájlokból származó információk olvasásáhozamelyet a FileInputStream osztály hajt végre. Ha fájlt szeretne olvasni az olvasási bájtok számára, elegendő létrehozni egy ilyen példányt, amely argumentumként adja át a fájl nevét a konstruktorhoz. Ha az adott nevet tartalmazó fájl nem létezik, a FileNotFoundException típusú kivételt el kell dobni.

Fájl sikeres megnyitása esetén a fent leírt módszerek alkalmazásával dolgozik, mivel a FileInputStream az InputStream utódja.

Primitív adattípusok olvasása

Az előző példa leírja a munkátbyte értékeket, amelyek szimbólumként értelmezhetők. De mi van, ha egész számot, tört vagy logikai értéket kell olvasnunk? Ehhez a Java InputStream közvetett módon bővül a DataInputStream osztály. Ez az osztály az InputStream csomagja, amelyet átadnak neki, amikor a konstruktornak argumentumként jön létre. Ez a fajta adat bináris formában olvassa az adatokat.

A DataInputStream a DataInput interfészt és a primitív adattípusok olvasási módszereit is implementálja. Az alábbiakban felsoroljuk ezeket a módszereket.

java io inputstream

A módszerek nevei önmagukért beszélnek - mindegyikük bizonyos típusú adatok olvasására szolgál.

Pufferelt bemeneti áram

A pufferelt adatok olvasási folyamata megvalósula BufferedInputStream osztály Java-ban. Az inputStream be van csomagolva ebben az osztályban. Ez az osztály kiegészíti az áramlást pufferrel, amely lehetővé teszi, hogy egynél több byte-ot olvasson. Ez lehetővé teszi a művelet teljesítményének jelentős javítását. A BufferedInputStream az InputStream közvetett leszármazottja, és ennek megfelelően örökli az összes fenti módszert.

Ennek az osztálynak két konstruktora van:

  • BufferedInputStream (InputStream bemenet);
  • BufferedInputStream (InputStream bemeneti adatfolyam, int pufferméret)

A konstruktorok aláírásától kezdve megérthetjük, hogy az első alapértelmezés szerint beállítja a puffer méretét, a második pedig manuálisan állíthatja be.

következtetés

Az InputStream alapvető végrehajtását lefedtük. Ha a fogadott byte-okat stringré kell alakítani, akkor be kell írni A Java InputStream to String () program sajnos nem túlterhelt, ezért speciális segédprogramokat, például az Apache Commons könyvtárból származó IOUtilokat kell használnia.</ span </ p>

Bővebben: