Класс FileInputStream
- Все реализуемые интерфейсы:
Closeable, AutoCloseable
public class FileInputStream extends InputStream
FileInputStream получает входные байты из файла в файловой системе. Доступность файлов зависит от среды хоста. FileInputStream предназначен для чтения потоков необработанных байтов, например данных изображения. Для чтения потоков символов рассмотрите возможность использования FileReader.
- Примечание к API:
- Для освобождения ресурсов, используемых этим потоком, следует вызвать метод
close()напрямую либо использовать операторtry-with-resources. - Требования к реализации:
- Подклассы отвечают за очистку ресурсов, полученных подклассом. Подклассам, которым необходимо очищать ресурсы после того, как поток станет недостижимым, следует использовать
Cleanerили другой механизм. - С версии:
- 1.0
- См. также:
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
FileInputStream |
Создает FileInputStream для чтения существующего файла, представленного объектом File file. |
FileInputStream |
Создает FileInputStream с использованием дескриптора файла fdObj, представляющего существующее подключение к реальному файлу в файловой системе. |
FileInputStream |
Создает FileInputStream для чтения существующего файла с именем пути name. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
int |
available() |
Возвращает оценку количества оставшихся байтов, которые можно прочитать (или пропустить) из этого входного потока без блокировки при следующем вызове метода для этого потока. |
void |
close() |
Закрывает этот файловый входной поток и освобождает все системные ресурсы, связанные с ним. |
FileChannel |
getChannel() |
Возвращает уникальный объект FileChannel, связанный с этим файловым входным потоком. |
final FileDescriptor |
getFD() |
Возвращает объект FileDescriptor, представляющий подключение к реальному файлу в файловой системе, используемому этим FileInputStream. |
int |
read() |
Читает байт данных из этого входного потока. |
int |
read |
Читает не более b.length байтов данных из этого входного потока в массив байтов. |
int |
read |
Читает не более len байтов данных из этого входного потока в массив байтов. |
byte[] |
readNBytes |
Читает из входного потока не более указанного количества байтов. |
long |
skip |
Пропускает и отбрасывает n байтов данных из входного потока. |
Методы, объявленные в классе InputStream
mark, markSupported, nullInputStream, readAllBytes, readNBytes, reset, skipNBytes, transferTo | Модификатор и тип | Метод | Описание |
|---|---|---|
void |
mark |
Отмечает текущую позицию в этом входном потоке. |
boolean |
markSupported() |
Проверяет, поддерживает ли этот входной поток методы mark и reset. |
static InputStream |
nullInputStream() |
Возвращает новый InputStream, который не считывает байты. |
byte[] |
readAllBytes() |
Считывает все оставшиеся байты из входного потока. |
int |
readNBytes |
Считывает из входного потока указанное количество байтов в заданный массив байтов. |
void |
reset() |
Перемещает этот поток в позицию, соответствующую моменту последнего вызова метода mark для этого входного потока. |
void |
skipNBytes |
Пропускает и отбрасывает из этого входного потока ровно n байтов данных. |
long |
transferTo |
Считывает все байты из этого входного потока и записывает их в заданный выходной поток в том же порядке, в котором они были прочитаны. |
Методы, объявленные в классе Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait | Модификатор и тип | Метод | Описание |
|---|---|---|
protected Object |
clone() |
Создает и возвращает копию этого объекта. |
boolean |
equals |
Определяет, равен ли этот объект какому-либо другому объекту. |
protected void |
finalize() |
Устарело, будет удалено: этот элемент API может быть удален в будущей версии. Финализация объявлена устаревшей и будет удалена в одном из будущих выпусков. |
final Class |
getClass() |
Возвращает класс времени выполнения этого Object. |
int |
hashCode() |
Возвращает хеш-код этого объекта. |
final void |
notify() |
Пробуждает один поток, ожидающий на мониторе этого объекта. |
final void |
notifyAll() |
Пробуждает все потоки, ожидающие на мониторе этого объекта. |
String |
toString() |
Возвращает строковое представление объекта. |
final void |
wait() |
Заставляет текущий поток ждать пробуждения, обычно посредством уведомления или прерывания. |
final void |
wait |
Заставляет текущий поток ждать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
final void |
wait |
Заставляет текущий поток ждать пробуждения, обычно посредством уведомления или прерывания, либо до истечения заданного промежутка реального времени. |
Подробное описание конструкторов
FileInputStream
public FileInputStream(String name) throws FileNotFoundException
FileInputStream для чтения существующего файла с именем пути name. Символические ссылки автоматически перенаправляются на целевой объект ссылки. Создается новый объект FileDescriptor для представления этого файлового подключения. Если файл с указанным именем не существует, является каталогом, а не обычным файлом, либо по какой-либо другой причине не может быть открыт для чтения, генерируется исключение FileNotFoundException.
- Параметры:
-
name— зависящее от системы имя файла. - Исключения:
-
FileNotFoundException— если файл не существует, является каталогом, а не обычным файлом, либо по какой-либо другой причине не может быть открыт для чтения.
FileInputStream
public FileInputStream(File file) throws FileNotFoundException
FileInputStream для чтения существующего файла, представленного объектом File file. Символические ссылки автоматически перенаправляются на целевой объект ссылки. Создается новый объект FileDescriptor для представления этого файлового подключения. Если файл с указанным именем не существует, является каталогом, а не обычным файлом, либо по какой-либо другой причине не может быть открыт для чтения, генерируется исключение FileNotFoundException.
- Параметры:
-
file— файл, который необходимо открыть для чтения. - Исключения:
-
FileNotFoundException— если файл не существует, является каталогом, а не обычным файлом, либо по какой-либо другой причине не может быть открыт для чтения. - См. также:
FileInputStream
public FileInputStream(FileDescriptor fdObj)
FileInputStream с использованием дескриптора файла fdObj, представляющего существующее подключение к реальному файлу в файловой системе. Если fdObj имеет значение null, генерируется исключение NullPointerException.
Этот конструктор не генерирует исключение, если fdObj является invalid. Однако при вызове методов результирующего потока для выполнения операций ввода-вывода в потоке генерируется исключение IOException.
- Параметры:
-
fdObj— дескриптор файла, который необходимо открыть для чтения.
Подробное описание методов
read
public int read() throws IOException
- Определен в:
-
readв классеInputStream - Возвращает:
- следующий байт данных или
-1, если достигнут конец файла. - Исключения:
-
IOException— если произошла ошибка ввода-вывода.
read
public int read(byte[] b) throws IOException
b.length байтов данных из этого входного потока в массив байтов. Метод блокируется до появления входных данных.- Переопределяет:
-
readв классеInputStream - Параметры:
-
b— буфер, в который считываются данные. - Возвращает:
- общее количество байтов, считанных в буфер, или
-1, если данные закончились из-за достижения конца файла. - Исключения:
-
IOException— если произошла ошибка ввода-вывода. - См. также:
read
public int read(byte[] b, int off, int len) throws IOException
len байтов данных из этого входного потока в массив байтов. Если len не равно нулю, метод блокируется до появления входных данных; в противном случае байты не считываются и возвращается 0.- Переопределяет:
-
readв классеInputStream - Параметры:
-
b— буфер, в который считываются данные. -
off— начальное смещение в массивеb, по которому записываются данные. -
len— максимальное количество байтов для чтения. - Возвращает:
- общее количество байтов, считанных в буфер, или
-1, если данные закончились из-за достижения конца потока. - Исключения:
-
NullPointerException— еслиbравноnull. -
IndexOutOfBoundsException— еслиoffотрицательно,lenотрицательно илиlenбольшеb.length - off -
IOException— если произошла ошибка ввода-вывода. - См. также:
readNBytes
public byte[] readNBytes(int len) throws IOException
InputStream Длина возвращаемого массива равна количеству байтов, считанных из потока. Если len равно нулю, байты не считываются и возвращается пустой массив байтов. В противном случае из потока считывается не более len байтов. Если достигнут конец потока, может быть считано меньше len байтов.
После достижения этим потоком конца последующие вызовы этого метода будут возвращать пустой массив байтов.
Следует учитывать, что этот метод предназначен для простых случаев, когда удобно считать указанное количество байтов в массив байтов. Общий объем памяти, выделяемой этим методом, пропорционален количеству байтов, считанных из потока, и ограничен значением len. Поэтому метод можно безопасно вызывать с очень большими значениями len при наличии достаточного объема памяти.
Поведение в случае асинхронного закрытия входного потока или прерывания потока во время чтения в значительной степени зависит от конкретного входного потока и поэтому не определено.
Если при чтении из входного потока возникает ошибка ввода-вывода, она может возникнуть после считывания некоторых, но не всех байтов. В результате входной поток может не достичь конца и перейти в несогласованное состояние. Настоятельно рекомендуется незамедлительно закрыть поток при возникновении ошибки ввода-вывода.
- Переопределяет:
-
readNBytesв классеInputStream - Параметры:
-
len— максимальное количество байтов для чтения - Возвращает:
- массив байтов, содержащий байты, считанные из этого входного потока
- Исключения:
-
IOException— если произошла ошибка ввода-вывода - С версии:
- 11
skip
public long skip(long n) throws IOException
n байтов данных из входного потока. По разным причинам метод skip может пропустить меньшее количество байтов, возможно, 0. Если n отрицательно, метод попытается пропустить данные в обратном направлении. Если файл, лежащий в основе потока, не поддерживает обратное перемещение из текущей позиции, генерируется исключение IOException. Возвращается фактическое количество пропущенных байтов. При перемещении вперед возвращается положительное значение. При перемещении назад возвращается отрицательное значение.
Этот метод может пропустить больше байтов, чем осталось в файле, лежащем в основе потока. Это не приводит к исключению, а количество пропущенных байтов может включать байты, расположенные за концом файла (EOF). Попытка чтения из потока после пропуска конца файла приведет к возврату значения -1, указывающего на конец файла.
- Переопределяет:
-
skipв классеInputStream - Параметры:
-
n— количество байтов, которые необходимо пропустить. - Возвращает:
- фактическое количество пропущенных байтов.
- Исключения:
-
IOException— если n отрицательно, поток не поддерживает поиск или произошла ошибка ввода-вывода. - См. также:
available
public int available() throws IOException
В некоторых случаях неблокирующее чтение (или пропуск) может выглядеть заблокированным, хотя на самом деле оно просто выполняется медленно, например при чтении больших файлов по медленной сети.
- Переопределяет:
-
availableв классеInputStream - Возвращает:
- оценку количества оставшихся байтов, которые можно прочитать (или пропустить) из этого входного потока без блокировки.
- Исключения:
-
IOException— если этот файловый входной поток был закрыт вызовомcloseили произошла ошибка ввода-вывода.
close
public void close() throws IOException
Если с этим потоком связан канал, он также закрывается.
- Определен в:
-
closeв интерфейсеAutoCloseable - Определен в:
-
closeв интерфейсеCloseable - Переопределяет:
-
closeв классеInputStream - Примечание к API:
- Переопределение
close()для выполнения действий по очистке надежно только при прямом вызове или вызове посредством try-with-resources. - Требования к реализации:
- Подклассам, которым необходимо очищать ресурсы после того, как поток станет недостижимым, следует использовать механизм
Cleaner.Если с этим потоком связан канал, данный метод закроет канал, который, в свою очередь, закроет этот поток. Подклассы, переопределяющие этот метод, должны быть готовы к возможному повторному входу в метод.
- Исключения:
-
IOException— если произошла ошибка ввода-вывода.
getFD
public final FileDescriptor getFD() throws IOException
FileDescriptor, представляющий подключение к реальному файлу в файловой системе, используемому этим FileInputStream.- Возвращает:
- объект дескриптора файла, связанный с этим потоком.
- Исключения:
-
IOException— если произошла ошибка ввода-вывода. - См. также:
getChannel
public FileChannel getChannel()
FileChannel, связанный с этим файловым входным потоком. Начальная position возвращаемого канала будет равна количеству байтов, уже считанных из файла. Чтение байтов из этого потока увеличивает позицию канала. Изменение позиции канала — явно или посредством чтения — изменяет позицию файла для этого потока.
- Возвращает:
- файловый канал, связанный с этим файловым входным потоком
- С версии:
- 1.4
© 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.