Класс FilterInputStream
- Все реализуемые интерфейсы:
Closeable, AutoCloseable
- Прямые известные подклассы:
BufferedInputStream, CheckedInputStream, CipherInputStream, DataInputStream, DeflaterInputStream, DigestInputStream, InflaterInputStream, LineNumberInputStream, ProgressMonitorInputStream, PushbackInputStream
public class FilterInputStream extends InputStream
FilterInputStream оборачивает другой входной поток, который используется в качестве основного источника данных и может преобразовывать данные на лету или предоставлять дополнительную функциональность. Сам класс FilterInputStream просто переопределяет отдельные методы класса InputStream версиями, которые перенаправляют все запросы обёрнутому входному потоку. Подклассы FilterInputStream могут, разумеется, переопределять любые методы, объявленные или унаследованные от FilterInputStream, а также предоставлять дополнительные поля и методы.- Начиная с:
- 1.0
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
protected InputStream |
in |
Входной поток, подлежащий фильтрации. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт FilterInputStream, присваивая аргумент in полю this.in, чтобы сохранить его для последующего использования. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
available() |
Возвращает оценку количества байтов, которые следующий вызов метода для этого входного потока может прочитать (или пропустить), не блокируя выполнение. |
void |
close() |
Закрывает этот входной поток и освобождает все системные ресурсы, связанные с ним. |
void |
mark |
Устанавливает отметку на текущей позиции в этом входном потоке. |
boolean |
markSupported() |
Проверяет, поддерживает ли этот входной поток методы mark и reset. |
int |
read() |
Считывает следующий байт данных из входного потока. |
int |
read |
Считывает не более b.length байтов данных из этого входного потока в массив байтов. |
int |
read |
Считывает не более len байтов данных из этого входного потока в массив байтов. |
void |
reset() |
Перемещает этот поток на позицию, которая была текущей в момент последнего вызова метода mark для этого входного потока. |
long |
skip |
Пропускает и отбрасывает n байтов данных из входного потока. |
Методы, объявленные в классе InputStream
nullInputStream, readAllBytes, readNBytes, readNBytes, skipNBytes, transferTo
Подробное описание полей
in
protected volatile InputStream in
Подробное описание конструкторов
FilterInputStream
protected FilterInputStream(InputStream in)
FilterInputStream, присваивая аргумент in полю this.in, чтобы сохранить его для последующего использования.- Параметры:
-
in— базовый входной поток илиnull, если этот экземпляр создаётся без базового потока.
Подробное описание методов
read
public int read() throws IOException
int в диапазоне от 0 до 255. Если байт недоступен, поскольку достигнут конец потока, возвращается значение -1. Этот метод блокирует выполнение до тех пор, пока входные данные не станут доступны, не будет обнаружен конец потока или не будет выброшено исключение.- Определён в:
-
readв классеInputStream - Требования к реализации:
- Этот метод просто выполняет
in.read()и возвращает результат. - Возвращает:
- следующий байт данных или
-1, если достигнут конец потока. - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода. - См. также:
read
public int read(byte[] b) throws IOException
b.length байтов данных из этого входного потока в массив байтов. Этот метод блокирует выполнение, пока не станут доступны входные данные.- Переопределяет:
-
readв классеInputStream - Требования к реализации:
- Этот метод просто выполняет вызов
read(b, 0, b.length)и возвращает результат. Важно, что он не выполняетin.read(b); некоторые подклассыFilterInputStreamзависят от фактически используемой стратегии реализации. - Параметры:
-
b— буфер, в который считываются данные. - Возвращает:
- общее количество байтов, считанных в буфер, или
-1, если данные закончились из-за достижения конца потока. - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода. - См. также:
read
public int read(byte[] b, int off, int len) throws IOException
len байтов данных из этого входного потока в массив байтов. Если len не равно нулю, метод блокирует выполнение, пока не станут доступны входные данные; в противном случае байты не считываются и возвращается 0.- Переопределяет:
-
readв классеInputStream - Требования к реализации:
- Этот метод просто выполняет
in.read(b, off, len)и возвращает результат. - Параметры:
-
b— буфер, в который считываются данные. -
off— начальное смещение в массивеb, по которому записываются данные. -
len— максимальное количество байтов для считывания. - Возвращает:
- общее количество байтов, считанных в буфер, или
-1, если данные закончились из-за достижения конца потока. - Выбрасывает:
-
NullPointerException— еслиbравноnull. -
IndexOutOfBoundsException— еслиoffотрицательно,lenотрицательно илиlenбольшеb.length - off -
IOException— если произошла ошибка ввода-вывода. - См. также:
skip
public long skip(long n) throws IOException
n байтов данных из входного потока. По разным причинам метод skip может пропустить меньшее количество байтов, возможно, 0. Возвращается фактическое количество пропущенных байтов.- Переопределяет:
-
skipв классеInputStream - Требования к реализации:
- Этот метод просто выполняет
in.skip(n)и возвращает результат. - Параметры:
-
n— количество байтов для пропуска. - Возвращает:
- фактическое количество пропущенных байтов.
- Выбрасывает:
-
IOException— еслиin.skip(n)выбрасывает IOException. - См. также:
available
public int available() throws IOException
- Переопределяет:
-
availableв классеInputStream - Требования к реализации:
- Этот метод возвращает результат
in.available(). - Возвращает:
- оценку количества байтов, которые можно прочитать (или пропустить) из этого входного потока без блокировки.
- Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода.
close
public void close() throws IOException
- Определён в:
-
closeв интерфейсеAutoCloseable - Определён в:
-
closeв интерфейсеCloseable - Переопределяет:
-
closeв классеInputStream - Требования к реализации:
- Этот метод просто выполняет
in.close(). - Выбрасывает:
-
IOException— если произошла ошибка ввода-вывода. - См. также:
mark
public void mark(int readlimit)
reset перемещает этот поток к последней отмеченной позиции, чтобы последующие операции чтения повторно считывали те же байты. Аргумент readlimit указывает этому входному потоку, сколько байтов можно прочитать до того, как отметка станет недействительной.
- Переопределяет:
-
markв классеInputStream - Требования к реализации:
- Этот метод просто выполняет
in.mark(readlimit). - Параметры:
-
readlimit— максимальное количество байтов, которое можно прочитать до того, как отметка станет недействительной. - См. также:
reset
public void reset() throws IOException
mark для этого входного потока. Отметки потоков предназначены для ситуаций, когда нужно немного прочитать данные вперёд, чтобы определить содержимое потока. Часто проще всего сделать это, вызвав универсальный анализатор. Если поток имеет тип, который обрабатывает анализатор, он просто продолжает работу. Если поток имеет другой тип, анализатор должен выбросить исключение при ошибке. Если это происходит в пределах readlimit байтов, внешний код может сбросить поток и попробовать другой анализатор.
- Переопределяет:
-
resetв классеInputStream - Требования к реализации:
- Этот метод просто выполняет
in.reset(). - Выбрасывает:
-
IOException— если для этого потока не была установлена отметка или если отметка стала недействительной. - См. также:
markSupported
public boolean markSupported()
mark и reset.- Переопределяет:
-
markSupportedв классеInputStream - Требования к реализации:
- Этот метод просто выполняет
in.markSupported(). - Возвращает:
-
true, если этот тип потока поддерживает методыmarkиreset; в противном случае —false. - См. также:
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/FilterInputStream.html