ByteArrayInputStream позволяет использовать буффер в памяти в качестве входного потока. Входным ресурсом является массив байтов.
Этот класс имеет такие методы:
- public int read () throws IOException
Этот метод читает каждый следующий байт из входного потока. Возвращает int-овое значение как следующий байт. Конец файла обозначается, как -1. - public int read (byte [] r, int off, int len) throws IOException
Этот метод читает массив байтов из входного потока от off до len. Возвращает общее количество прочитанных байтов. Конец файла обозначается, как -1. - public int available() throws IOException
Возвращает количество байтов, доступных для чтения в указанном входном потоке. - public void mark (int read) throws IOException
Этот метод устанавливает текующую отмеченную позицию в потоке. Устанавливает максимальное количество байтов, которое может быть прочитано перед тем, как отмеченное место станет недоступным. - public long skip (long n) throws IOException
Пропускает чтение указанного количества байтов. Возвращает общее количество пропущенных байтов.
Давайте рассмотрим как это работает на практике на примере простого приложения.
Пример:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
public class ByteArrayInputStreamDemo {
public static void main(String[] args) throws IOException {
ByteArrayOutputStream byteArrayOutputStream =
new ByteArrayOutputStream(20);
System.out.println("Enter the string (up to 12 elements): ");
while (byteArrayOutputStream.size() != 13) {
byteArrayOutputStream.write(System.in.read());
}
byte[] byteArray = byteArrayOutputStream.toByteArray();
System.out.println("Byte Array: ");
for(byte b: byteArray){
System.out.print((char) b + " ");
}
System.out.println("\n=======================\n");
int i;
ByteArrayInputStream byteArrayInputStream =
new ByteArrayInputStream(byteArray);
System.out.println("Now we will convert all elements of array to lower case: ");
while ((i = byteArrayInputStream.read())!=-1){
System.out.print(Character.toLowerCase((char)i));
}
byteArrayInputStream.close();
}
}
В результате работы программы мы получим, примерно, следующий результат:
/*Some system messages*/
Enter the string (up to 12 elements):
This is test
Byte Array:
T h i s i s t e s t
=======================
Now we will convert all elements of array to lower case:
this is test
В этом уроке мы рассмотрели основы работы с классом ByteArrayInputStream.