Метод readAllBytes
Метод readAllBytes класса InputStream читает все оставшиеся байты из входного потока и возвращает их в виде массива байтов типа byte[]. Метод не принимает параметров. Чтение продолжается до достижения конца потока. После успешного выполнения метода поток считается полностью прочитанным. Метод блокирует выполнение программы до тех пор, пока все данные не будут прочитаны или не произойдет ошибка ввода-вывода.
Если поток уже был закрыт или произошла ошибка ввода-вывода, метод выбрасывает исключение IOException. Данный метод удобен для небольших потоков, размер которых заранее известен или невелик, поскольку весь результат хранится в памяти.
Синтаксис
byte[] readAllBytes() throws IOException
Пример
Давайте прочитаем все байты из строки "abcde", преобразованной в поток ввода:
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.IOException;
import java.util.Arrays;
public class Main
{
public static void main(String[] args) throws IOException
{
String str = "abcde";
InputStream is = new ByteArrayInputStream(str.getBytes());
byte[] res = is.readAllBytes();
System.out.println(Arrays.toString(res));
}
}
Результат выполнения кода:
[97, 98, 99, 100, 101]
Пример
Давайте прочитаем байты и преобразуем их обратно в строку:
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.IOException;
public class Main
{
public static void main(String[] args) throws IOException
{
String str = "12345";
InputStream is = new ByteArrayInputStream(str.getBytes());
byte[] res = is.readAllBytes();
System.out.println(new String(res));
}
}
Результат выполнения кода:
"12345"
Пример
Давайте проверим, что после полного чтения повторный вызов метода вернет пустой массив:
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.IOException;
import java.util.Arrays;
public class Main
{
public static void main(String[] args) throws IOException
{
String str = "abcde";
InputStream is = new ByteArrayInputStream(str.getBytes());
byte[] first = is.readAllBytes();
byte[] second = is.readAllBytes();
System.out.println(Arrays.toString(first));
System.out.println(Arrays.toString(second));
}
}
Результат выполнения кода:
[97, 98, 99, 100, 101]
[]
Смотрите также
-
класс
InputStream,
который представляет входной поток байтов -
метод
read,
который читает один байт из потока -
метод
readNBytes,
который читает заданное количество байтов -
метод
transferTo,
который передает байты в выходной поток