Класс 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
Подробное описание конструкторов
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.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/io/FileInputStream.html