Класс InputStream
Класс InputStream - это абстрактный класс, который
представляет собой суперкласс для всех классов, считывающих
байты из источника (файла, сети, памяти). Он не может быть
создан напрямую, но определяет основные методы для работы
с входными потоками. В параметрах методов чтения обычно
передается буфер (массив байтов) и смещение, а также
количество байтов для чтения.
Синтаксис
public abstract class InputStream implements Closeable
Основные методы
Класс InputStream предоставляет следующие ключевые методы:
int read()
int read(byte[] b)
int read(byte[] b, int off, int len)
byte[] readAllBytes()
byte[] readNBytes(int len)
long skip(long n)
int available()
void close()
long transferTo(OutputStream out)
Пример
Давайте рассмотрим пример чтения байтов из массива
с помощью класса ByteArrayInputStream, который
является наследником InputStream:
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
byte[] data = {97, 98, 99, 100, 101};
try (InputStream is = new ByteArrayInputStream(data))
{
int byteData;
while ((byteData = is.read()) != -1)
{
System.out.print((char) byteData);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте прочитаем все байты из потока
с помощью метода readAllBytes:
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)
{
byte[] data = {49, 50, 51, 52, 53};
try (InputStream is = new ByteArrayInputStream(data))
{
byte[] res = is.readAllBytes();
System.out.println(Arrays.toString(res));
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Результат выполнения кода:
[49, 50, 51, 52, 53]
Пример
Давайте прочитаем определенное количество байтов
с помощью метода readNBytes:
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)
{
byte[] data = {97, 98, 99, 100, 101};
try (InputStream is = new ByteArrayInputStream(data))
{
byte[] res = is.readNBytes(3);
System.out.println(Arrays.toString(res));
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Результат выполнения кода:
[97, 98, 99]
Смотрите также
-
метод
read,
который читает один байт из потока -
метод
readAllBytes,
который читает все байты из потока -
метод
close,
который закрывает поток и освобождает ресурсы -
класс
FileInputStream,
который читает байты из файла