Java ByteArrayInputStream (példákkal)

Ebben az oktatóanyagban példák segítségével megismerhetjük a Java ByteArrayInputStream-et és annak módszereit.

A csomag ByteArrayInputStreamosztálya java.iohasználható a bemeneti adatok tömbjének olvasására (bájtokban).

Kiterjeszti az InputStreamabsztrakt osztályt.

Megjegyzés : Itt ByteArrayInputStreama 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.ByteArrayInputStreamelő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 arrtö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 ByteArrayInputStreamosztály megvalósításokat biztosít az InputStreamosztá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ől
  • read(byte() array) - olvassa a bájtokat a bemeneti adatfolyamból és tárolja a megadott tömbben
  • read(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

  1. A available()módszerrel megvizsgáltuk a rendelkezésre álló bájtok számát a bemeneti adatfolyamban.
  2. Ezután read()kétszer használtuk a módszert, hogy 2 bájtot olvassunk a bemeneti adatfolyamból.
  3. 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 ByteArrayInputStreamosztá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ó).

érdekes cikkek...