Spec-Zone.ru › OpenJDK 8

Класс InputStream

  • java.lang.Object
    • java.io.InputStream
Все реализованные интерфейсы:
Closeable, AutoCloseable
Прямые известные подклассы:
AudioInputStream, ByteArrayInputStream, FileInputStream, FilterInputStream, InputStream, ObjectInputStream, PipedInputStream, SequenceInputStream, StringBufferInputStream

public abstract class InputStream
extends Object
implements Closeable

Этот абстрактный класс является суперклассом всех классов, представляющих поток ввода байтов.

Приложениям, которым необходимо определить подкласс InputStream , всегда необходимо предоставить метод, возвращающий следующий байт ввода.

С тех пор:
JDK1.0
См. также:
BufferedInputStream, ByteArrayInputStream, DataInputStream, FilterInputStream, read(), OutputStream, PushbackInputStream

Конструкторы

Конструктор и описание
InputStream()

Методы

Модификатор и тип Метод и описание
int available()

Возвращает оценку количества байтов, которые можно прочитать (или пропустить) из этого потока ввода без блокировки до следующего вызова метода для этого потока ввода.

void close()

Закрывает этот поток ввода и высвобождает любые системные ресурсы, связанные с потоком.

void mark(int readlimit)

Помечает текущую позицию в этом потоке ввода.

boolean markSupported()

Проверяет, поддерживает ли этот поток ввода методы mark и reset.

abstract int read()

Читает следующий байт данных из потока ввода.

int read(byte[] b)

Читает некоторое количество байтов из потока ввода и сохраняет их в массив байтов b.

int read(byte[] b, int off, int len)

Читает до len байтов данных из потока ввода в массив байтов.

void reset()

Перемещает этот поток в позицию, существовавшую в момент последнего вызова метода mark для этого потока ввода.

long skip(long n)

Пропускает и отбрасывает n байта данных из этого потока ввода.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Конструкторы

InputStream

public InputStream()

Методы

read

public abstract int read()
                  throws IOException

Считывает следующий байт данных из потока ввода. Значение байта возвращается как int в диапазоне 0 до 255. Если байт недоступен, потому что достигнут конец потока, возвращается значение -1. Данный метод блокируется до тех пор, пока данные ввода не станут доступными, не будет обнаружен конец потока или не будет выброшено исключение.

Подкласс должен предоставить реализацию этого метода.

Возвращает:
следующий байт данных или -1 в случае достижения конца потока.
Выбрасывает:
IOException - если произошла ошибка ввода-вывода.

read

public int read(byte[] b)
         throws IOException

Считывает некоторое количество байтов из потока ввода и сохраняет их в массив буфера b. Количество фактически считанных байтов возвращается в виде целого числа. Данный метод блокируется до тех пор, пока данные ввода не станут доступными, не будет обнаружен конец файла или не будет выброшено исключение.

Если длина b равна нулю, то байты не считываются, и возвращается 0; в противном случае производится попытка считывания как минимум одного байта. Если байт недоступен из-за достижения конца файла, возвращается значение -1; в противном случае как минимум один байт считывается и сохраняется в b.

Первый считанный байт сохраняется в элемент b[0], следующий - в b[1] и так далее. Количество считанных байтов не превышает длины b. Пусть k - количество фактически считанных байтов; эти байты будут сохранены в элементах b[0] по b[k-1], оставляя элементы b[k] по b[b.length-1] неизменными.

Метод read(b) для класса InputStream имеет тот же эффект, что и:

read(b, 0, b.length)
Параметры:
b - буфер, в который считываются данные.
Возвращает:
общее количество байтов, прочитанных в буфер, или -1 если больше нет данных из-за достижения конца потока.
Выбрасывает:
IOException - Если первый байт не может быть прочитан по какой-либо причине, кроме конца файла, если поток ввода был закрыт или произошла другая ошибка ввода-вывода.
NullPointerException - если b равно null.
См. также:
read(byte[], int, int)

read

public int read(byte[] b,
                int off,
                int len)
         throws IOException

Считывает до len байтов данных из потока ввода в массив байтов. Производится попытка считать до len байтов, но может быть считан меньший объём. Количество фактически считанных байтов возвращается в виде целого числа.

Данный метод блокируется до тех пор, пока данные ввода не станут доступными, не будет обнаружен конец файла или не будет выброшено исключение.

Если len равно нулю, то байты не считываются и возвращается 0; в противном случае производится попытка считывания как минимум одного байта. Если байт недоступен из-за достижения конца файла, возвращается значение -1; в противном случае как минимум один байт считывается и сохраняется в b.

Первый считанный байт сохраняется в элемент b[off], следующий - в b[off+1] и так далее. Количество считанных байтов не превышает len. Пусть k - количество фактически считанных байтов; эти байты будут сохранены в элементах b[off] по b[off+k-1], оставляя элементы b[off+k] по b[off+len-1] неизменными.

В любом случае, элементы b[0] по b[off] и элементы b[off+len] по b[b.length-1] остаются неизменными.

Метод read(b, off, len) для класса InputStream просто многократно вызывает метод read(). Если первый вызов приводит к IOException, то данное исключение возвращается из вызова метода read(b, off, len). Если любой последующий вызов read() приводит к IOException, исключение перехватывается и обрабатывается как конец файла; считанные до этого момента байты сохраняются в b, и возвращается количество байтов, прочитанных до возникновения исключения. По умолчанию этот метод блокируется до тех пор, пока не будет прочитано необходимое количество входных данных len, не будет обнаружен конец файла или не будет выброшено исключение. Подклассы рекомендуют предоставить более эффективную реализацию этого метода.

Параметры:
b - буфер, в который считываются данные.
off - начальный смещение в массиве b для записи данных.
len - максимальное количество байтов для чтения.
Возвращает:
общее количество байтов, прочитанных в буфер, или -1 если больше нет данных из-за достижения конца потока.
Выбрасывает:
IOException - Если первый байт не может быть прочитан по какой-либо причине, кроме конца файла, или если поток ввода был закрыт, или произошла другая ошибка ввода-вывода.
NullPointerException - Если b равно null.
IndexOutOfBoundsException - Если off отрицательное, len отрицательное или len больше b.length - off
См. также:
read()

skip

public long skip(long n)
          throws IOException

Пропускает и отбрасывает n байтов данных из этого потока ввода. Метод skip может по различным причинам пропустить меньшее количество байтов, возможно 0. Это может быть результатом различных условий; достижение конца файла до того, как было пропущено n байтов, — лишь один из вариантов. Возвращается фактическое количество пропущенных байтов. Если n отрицательное, метод skip для класса InputStream всегда возвращает 0, и байты не пропускаются. Подклассы могут обрабатывать отрицательное значение по-разному.

Метод skip этого класса создает массив байтов и затем многократно считывает в него, пока не будет прочитано n байтов или не будет достигнут конец потока. Подклассы рекомендуют предоставить более эффективную реализацию этого метода. Например, реализация может зависеть от возможности перехода к указанному положению.

Параметры:
n - количество байтов для пропуска.
Возвращает:
фактическое количество пропущенных байтов.
Выбрасывает:
IOException - если поток не поддерживает переходы, или произошла другая ошибка ввода-вывода.

available

public int available()
              throws IOException

Возвращает оценку количества байтов, которые можно прочитать (или пропустить) из этого потока ввода без блокировки до следующего вызова метода для данного потока ввода. Следующий вызов может быть выполнен той же или другой нитью.

Обратите внимание, что, хотя некоторые реализации InputStream возвращают общее количество байтов в потоке, многие из них не делают этого. Использование возвращаемого значения этого метода для выделения буфера, предназначенного для хранения всех данных в этом потоке, никогда не является корректным.

Реализация этого метода в подклассе может выбрать выброс исключения IOException, если этот поток ввода был закрыт с помощью вызова метода close().

Метод available для класса InputStream всегда возвращает 0.

Этот метод должен быть переопределен подклассами.

Возвращает:
оценка количества байтов, которые можно прочитать (или пропустить) из этого потока ввода без блокировки, или 0 при достижении конца потока ввода.
Выбрасывает:
IOException - если произошла ошибка ввода-вывода.

close

public void close()
           throws IOException

Закрывает этот поток ввода и высвобождает все системные ресурсы, связанные с потоком.

Метод close для InputStream ничего не делает.

Определено в:
close в интерфейсе Closeable
Определено в:
close в интерфейсе AutoCloseable
Выбрасывает:
IOException - если произошла ошибка ввода-вывода.

mark

public void mark(int readlimit)

Помечает текущую позицию в этом потоке ввода. Последующий вызов метода reset переместит этот поток в последнюю помеченную позицию, чтобы последующие чтения повторно считали те же байты.

Аргумент readlimit сообщает этому потоку ввода разрешить чтение такого количества байтов, прежде чем позиция метки станет недействительной.

Общая спецификация метода mark заключается в том, что, если метод markSupported возвращает true, поток как-то запоминает все байты, прочитанные после вызова mark, и готов предоставить те же байты снова при каждом вызове метода reset. Однако поток не обязан запоминать какие-либо данные, если из потока прочитано более readlimit байтов перед вызовом reset.

Пометка закрытого потока не должна оказывать никакого влияния на поток.

Метод mark для InputStream ничего не делает.

Параметры:
readlimit - максимальное ограничение байтов, которые могут быть прочитаны, прежде чем позиция метки станет недействительной.
См. также:
reset()

reset

public void reset()
           throws IOException

Перемещает этот поток к позиции, на которой находился метод mark в последний раз, вызываемый на этом потоке ввода.

Общий контракт метода reset:

  • Если метод markSupported возвращает true, то:
    • Если метод mark не вызывался с момента создания потока или количество прочитанных байтов из потока с момента последнего вызова mark больше аргумента метода mark при этом вызове, то может быть выброшено исключение IOException.
    • Если такое исключение не выброшено, то поток сбрасывается в состояние, при котором все байты, прочитанные с момента последнего вызова mark (или с начала файла, если mark не вызывался), будут повторно предоставлены последующим вызовам метода read, а затем любые байты, которые в противном случае были бы следующими входными данными на момент вызова reset.
  • Если метод markSupported возвращает false, то:
    • Вызов метода reset может выбросить исключение IOException.
    • Если исключение не выброшено, то поток сбрасывается в фиксированное состояние, зависящее от конкретного типа потока ввода и способа его создания. Байты, которые будут предоставлены последующим вызовам метода read, зависят от конкретного типа потока ввода.

Метод reset для класса InputStream ничего не делает, кроме как выбросить исключение IOException.

Выбрасывает:
IOException - если этот поток не был помечен или метка была аннулирована.
См. также:
mark(int), IOException

markSupported

public boolean markSupported()

Проверяет, поддерживает ли этот поток ввода методы mark и reset. Поддержка методов mark и reset является инвариантным свойством конкретного экземпляра потока ввода. Метод markSupported для InputStream возвращает false.

Возвращает:
true , если этот экземпляр потока поддерживает методы mark и reset; false в противном случае.
См. также:
mark(int), reset()

© 1993, 2020, 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API