Java ByteArrayInputStream (с примери)

В този урок ще научим за Java ByteArrayInputStream и нейните методи с помощта на примери.

В ByteArrayInputStreamкласа на java.ioпакета може да се използва, за да прочетете множество входни данни (в байтове).

Той разширява InputStreamабстрактния клас.

Забележка : ByteArrayInputStreamВходният поток се създава с помощта на масива от байтове. Той включва вътрешен масив за съхраняване на данни от този конкретен байтов масив.

Създайте ByteArrayInputStream

За да създадем входен поток от байтов масив, първо трябва да импортираме java.io.ByteArrayInputStreamпакета. След като импортираме пакета, ето как можем да създадем входен поток.

 // Creates a ByteArrayInputStream that reads entire array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr); 

Тук създадохме входен поток, който чете цели данни от arrмасива. Можем обаче да създадем и входния поток, който чете само някои данни от масива.

 // Creates a ByteArrayInputStream that reads a portion of array ByteArrayInputStream input = new ByteArrayInputStream(byte() arr, int start, int length); 

Тук входният поток отчита броя на байтовете, равен на дължината, от масива, започвайки от началната позиция.

Методи на ByteArrayInputStream

В ByteArrayInputStreamклас осигурява приложения за различни методи представят в InputStreamклас.

метод read ()

  • read() - чете единичния байт от масива, присъстващ във входния поток
  • read(byte() array) - чете байтове от входния поток и съхранява в посочения масив
  • read(byte() array, int start, int length) - чете от потока броя байтове, равен на дължината, и съхранява в посочения масив, започвайки от позицията старт

Пример: ByteArrayInputStream за четене на данни

 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(); ) ) ) 

Изход

 Байтовете, прочетени от входния поток: 1, 2, 3, 4, 

В горния пример създадохме име на входен поток от байтови масиви input.

 ByteArrayInputStream input = new ByteArrayInputStream(array); 

Тук входният поток включва всички данни от посочения масив. За да четем данни от входния поток, използвахме read()метода.

на разположение () Метод

За да получим броя на наличните байтове във входния поток, можем да използваме available()метода. Например,

 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(); ) ) ) 

Изход

 Налични байтове в началото: 4 Налични байтове в края: 2 

В горния пример,

  1. Използвахме available()метода за проверка на броя на наличните байтове във входния поток.
  2. След това използвахме read()метода 2 пъти, за да прочетем 2 байта от входния поток.
  3. Сега, след като прочетохме 2-те байта, проверихме наличните байтове. Този път наличните байтове намаляха с 2.

skip () Метод

За да отхвърлим и пропуснем посочения брой байтове, можем да използваме skip()метода. Например,

 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(); ) ) ) 

Изход

 Входящ поток след пропускане на 2 байта: 3, 4, 

В горния пример използвахме метода skip (), за да пропуснем 2 байта данни от входния поток. Следователно 1 и 2 не се четат от входния поток.

метод close ()

За да затворим входния поток, можем да използваме close()метода.

Въпреки това, close()методът няма ефект в ByteArrayInputStreamклас. Можем да използваме методите от този клас дори след close()извикването на метода.

Други методи на ByteArrayInputStream

Методи Описания
finalize() гарантира, че close()методът е извикан
mark() маркира позицията във входния поток, до която са прочетени данните
reset() връща контролата към точката във входния поток, където е зададена маркировката
markSupported() проверява дали входният поток поддържа mark()иreset()

За да научите повече, посетете Java ByteArrayInputStream (официална документация за Java).

Интересни статии...