Ebben az oktatóanyagban példák segítségével megismerhetjük a Java ByteArrayInputStream-et és annak módszereit.
A csomag ByteArrayInputStream
osztálya java.io
használható a bemeneti adatok tömbjének olvasására (bájtokban).
Kiterjeszti az InputStream
absztrakt osztályt.
Megjegyzés : Itt ByteArrayInputStream
a bemeneti adatfolyam bájt tömb felhasználásával jön létre. Belső tömböt tartalmaz az adott bájt tömb adatainak tárolására.
Hozzon létre egy ByteArrayInputStream fájlt
A bájt tömb bemeneti adatfolyam létrehozásához java.io.ByteArrayInputStream
először importálnunk kell a csomagot. A csomag importálása után a következőképpen hozhatunk létre bemeneti adatfolyamot.
// Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr);
Itt létrehoztunk egy bemeneti adatfolyamot, amely a arr
tömb teljes adatait kiolvassa . Hozhatunk létre azt a bemeneti adatfolyamot is, amely csak néhány adatot olvas ki a tömbből.
// Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length);
Itt a bemeneti adatfolyam kiolvassa a hosszúságnak megfelelő bájtok számát a tömbből a kiindulási helyzetből kiindulva.
A ByteArrayInputStream módszerei
Az ByteArrayInputStream
osztály megvalósításokat biztosít az InputStream
osztályban jelen lévő különböző módszerek számára .
read () módszer
read()
- beolvassa az egyetlen bájtot a bemeneti adatfolyamban lévő tömbbőlread(byte() array)
- olvassa a bájtokat a bemeneti adatfolyamból és tárolja a megadott tömbbenread(byte() array, int start, int length)
- beolvassa a hosszúsággal megegyező bájtok számát az adatfolyamból és tárolja a megadott tömbben a pozíció kezdetétől kezdődően
Példa: ByteArrayInputStream az adatok olvasásához
import java.io.ByteArrayInputStream; public class Main ( public static void main(String() args) ( // Creates an array of byte byte() array = (1, 2, 3, 4); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); System.out.print("The bytes read from the input stream: "); for(int i= 0; i < array.length; i++) ( // Reads the bytes int data = input.read(); System.out.print(data + ", "); ) input.close(); ) catch(Exception e) ( e.getStackTrace(); ) ) )
Kimenet
A bemeneti adatfolyamból leolvasható bájtok: 1, 2, 3, 4,
A fenti példában létrehoztunk egy byte tömböt bemeneti folyam elemzi input
.
ByteArrayInputStream input = new ByteArrayInputStream(array);
Itt a bemeneti adatfolyam tartalmazza a megadott tömb összes adatait. A bemeneti adatfolyam adatainak kiolvasásához a read()
módszert használtuk .
elérhető () módszer
Ahhoz, hogy megkapjuk a rendelkezésre álló bájtok számát a bemeneti adatfolyamban, használhatjuk a available()
módszert. Például,
import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Creates an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Returns the available number of bytes System.out.println("Available bytes at the beginning: " + input.available()); // Reads 2 bytes from the input stream input.read(); input.read(); // Returns the available number of bytes System.out.println("Available bytes at the end: " + input.available()); input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Kimenet
Elérhető bájtok az elején: 4 Elérhető bájtok a végén: 2
A fenti példában
- A
available()
módszerrel megvizsgáltuk a rendelkezésre álló bájtok számát a bemeneti adatfolyamban. - Ezután
read()
kétszer használtuk a módszert, hogy 2 bájtot olvassunk a bemeneti adatfolyamból. - A 2 bájt elolvasása után ellenőriztük a rendelkezésre álló bájtokat. Ezúttal a rendelkezésre álló bájtok 2-vel csökkentek.
skip () módszer
A megadott számú bájt elvetéséhez és kihagyásához használhatjuk a skip()
módszert. Például,
import java.io.ByteArrayInputStream; public class Main ( public static void main(String args()) ( // Create an array of bytes byte() array = ( 1, 2, 3, 4 ); try ( ByteArrayInputStream input = new ByteArrayInputStream(array); // Using the skip() method input.skip(2); System.out.print("Input stream after skipping 2 bytes: "); int data = input.read(); while (data != -1) ( System.out.print(data + ", "); data = input.read(); ) // close() method input.close(); ) catch (Exception e) ( e.getStackTrace(); ) ) )
Kimenet
Bemeneti adatfolyam 2 bájt kihagyása után: 3, 4,
A fenti példában a skip () metódust alkalmaztuk 2 bájt adat kihagyására a bemeneti adatfolyamból. Ezért az 1. és 2. nem olvasható ki a bemeneti adatfolyamból.
bezár () módszer
A bemeneti adatfolyam bezárásához használhatjuk a close()
módszert.
A close()
módszer azonban az ByteArrayInputStream
osztályban nincs hatással . Ennek az osztálynak a módszereit a close()
módszer meghívása után is használhatjuk .
A ByteArrayInputStream egyéb módszerei
Mód | Leírások |
---|---|
finalize() | biztosítja a close() módszer meghívását |
mark() | jelöli azt a pozíciót a bemeneti adatfolyamban, amelyre az adatokat beolvasták |
reset() | visszaadja a vezérlést a bemeneti adatfolyam azon pontjára, ahol a jelölést beállították |
markSupported() | ellenőrzi, hogy a bemeneti adatfolyam támogatja - e mark() ésreset() |
További információkért látogasson el a Java ByteArrayInputStream oldalra (hivatalos Java dokumentáció).