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.
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ó.
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.
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>