В този урок ще научим за 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
В горния пример,
- Използвахме
available()
метода за проверка на броя на наличните байтове във входния поток. - След това използвахме
read()
метода 2 пъти, за да прочетем 2 байта от входния поток. - Сега, след като прочетохме 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).