Класс DataInputStream
- java.lang.Object
-
- java.io.InputStream
-
- java.io.FilterInputStream
-
- java.io.DataInputStream
- Все реализованные интерфейсы:
- Closeable, DataInput, AutoCloseable
public class DataInputStream extends FilterInputStream implements DataInput
Поток данных для ввода позволяет приложению читать примитивные типы данных Java из основного потока ввода независимо от машины. Приложение использует поток вывода данных для записи данных, которые могут быть позже прочитаны потоком ввода данных.
DataInputStream не обязательно безопасен для многопоточного доступа. Безопасность потоков является необязательной и лежит на ответственности пользователей методов этого класса.
- С:
- JDK1.0
- См. также:
DataOutputStream
Сводка полей
Поля, унаследованные от класса java.io.FilterInputStream
in Сводка конструкторов
| Конструктор и описание |
|---|
DataInputStream(InputStream in) Создаёт DataInputStream, использующий указанный базовый InputStream. |
Сводка методов
| Модификатор и тип | Метод и описание |
|---|---|
int |
read(byte[] b) Считывает некоторое количество байтов из содержащегося потока ввода и сохраняет их в массив байтов |
int |
read(byte[] b,
int off,
int len) Считывает до |
boolean |
readBoolean() См. общее соглашение метода |
byte |
readByte() См. общее соглашение метода |
char |
readChar() См. общее соглашение метода |
double |
readDouble() См. общее соглашение метода |
float |
readFloat() См. общее соглашение метода |
void |
readFully(byte[] b) См. общее соглашение метода |
void |
readFully(byte[] b,
int off,
int len) См. общее соглашение метода |
int |
readInt() См. общее соглашение метода |
String |
readLine() Устаревший. Этот метод не правильно преобразует байты в символы. Начиная с JDK 1.1, предпочтительный способ чтения строк текста — метод DataInputStream d = new DataInputStream(in);на: BufferedReader d
= new BufferedReader(new InputStreamReader(in)); |
long |
readLong() См. общее соглашение метода |
short |
readShort() См. общее соглашение метода |
int |
readUnsignedByte() См. общее соглашение метода |
int |
readUnsignedShort() См. общее соглашение метода |
String |
readUTF() См. общее соглашение метода |
static String |
readUTF(DataInput in) Считывает из потока |
int |
skipBytes(int n) См. общее соглашение метода |
Методы, унаследованные от класса java.io.FilterInputStream
available, close, mark, markSupported, read, reset, skip Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
DataInputStream
public DataInputStream(InputStream in)
Создаёт DataInputStream, использующий указанный базовый поток ввода InputStream.
- Параметры:
-
in- указанный поток ввода
Методы
read
public final int read(byte[] b)
throws IOException Считывает некоторое количество байтов из содержащегося потока ввода и сохраняет их в массив байтов b. Количество фактически считанных байтов возвращается в виде целого числа. Этот метод блокируется, пока данные ввода не станут доступны, пока не будет достигнут конец файла или не будет выброшено исключение.
Если b имеет значение null, выбрасывается NullPointerException. Если длина b равна нулю, то не считываются байты и возвращается 0; в противном случае выполняется попытка считать по крайней мере один байт. Если байт недоступен, потому что поток достиг конца файла, возвращается значение -1; в противном случае по крайней мере один байт считывается и сохраняется в b.
Первый считанный байт сохраняется в элемент b[0], следующий - в b[1], и так далее. Количество считанных байтов не превышает длину b. Пусть k - количество фактически считанных байтов; эти байты будут сохранены в элементах b[0] по b[k-1], оставляя элементы b[k] по b[b.length-1] неизменёнными.
Метод read(b) имеет тот же эффект, что и:
read(b, 0, b.length)
- Переопределяет:
-
readв классеFilterInputStream - Параметры:
-
b- буфер, в который считываются данные. - Возвращает:
- общее количество байтов, считанных в буфер, или
-1, если больше нет данных, потому что достигнут конец потока. - Исключение:
-
IOException- если первый байт не может быть прочитан по какой-либо причине, кроме конца файла, поток закрыт, а базовый поток ввода не поддерживает чтение после закрытия или произошла другая ошибка ввода-вывода. - См. также:
-
FilterInputStream.in,InputStream.read(byte[], int, int)
read
public final 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в классеFilterInputStream - Параметры:
-
b- буфер, в который считываются данные. -
off- начальный смещение в целевом массивеb -
len- максимальное количество считываемых байтов. - Возвращает:
- общее количество байтов, считанных в буфер, или
-1, если больше нет данных, потому что достигнут конец потока. - Исключение:
-
NullPointerException- Еслиbимеет значениеnull. -
IndexOutOfBoundsException- Еслиoffотрицательно,lenотрицательно илиlenбольше, чемb.length - off -
IOException- если первый байт не может быть прочитан по какой-либо причине, кроме конца файла, поток закрыт, а базовый поток ввода не поддерживает чтение после закрытия или произошла другая ошибка ввода-вывода. - См. также:
-
FilterInputStream.in,InputStream.read(byte[], int, int)
readFully
public final void readFully(byte[] b)
throws IOException См. общий контракт метода readFully класса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Определено:
-
readFullyв интерфейсеDataInput - Параметры:
-
b- буфер, в который считываются данные. - Исключение:
-
EOFException- если этот поток ввода достигает конца, прежде чем прочитать все байты. -
IOException- поток закрыт, а содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. - См. также:
FilterInputStream.in
readFully
public final void readFully(byte[] b,
int off,
int len)
throws IOException См. общий контракт метода readFully класса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Определено:
-
readFullyв интерфейсеDataInput - Параметры:
-
b- буфер, в который считываются данные. -
off- начальный смещение данных. -
len- количество байтов для чтения. - Исключение:
-
EOFException- если этот поток ввода достигает конца, прежде чем прочитать все байты. -
IOException- поток закрыт, а содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. - См. также:
FilterInputStream.in
skipBytes
public final int skipBytes(int n)
throws IOException См. общий контракт метода skipBytes класса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Определено:
-
skipBytesв интерфейсеDataInput - Параметры:
-
n- количество байтов, которые нужно пропустить. - Возвращает:
- фактическое количество пропущенных байтов.
- Исключение:
-
IOException- если содержащийся поток ввода не поддерживает перемещение, или поток закрыт, а содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода.
readBoolean
public final boolean readBoolean()
throws IOException См. общий контракт метода readBoolean класса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Определено:
-
readBooleanв интерфейсеDataInput - Возвращает:
- считанное значение
boolean. - Исключение:
-
EOFException- если этот поток ввода достиг конца. -
IOException- поток закрыт, а содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. - См. также:
FilterInputStream.in
readByte
public final byte readByte()
throws IOException См. общий контракт метода readByte класса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Определено:
-
readByteв интерфейсеDataInput - Возвращает:
- следующий байт этого потока ввода в виде знакового 8-битного
byte. - Исключение:
-
EOFException- если этот поток ввода достиг конца. -
IOException- поток закрыт, а содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. - См. также:
FilterInputStream.in
readUnsignedByte
public final int readUnsignedByte()
throws IOException См. общий контракт метода readUnsignedByte класса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Определено:
-
readUnsignedByteв интерфейсеDataInput - Возвращает:
- следующий байт этого потока ввода, интерпретируемый как беззнаковое 8-битное число.
- Исключение:
-
EOFException- если этот поток ввода достиг конца. -
IOException- поток закрыт, а содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. - См. также:
FilterInputStream.in
readShort
public final short readShort()
throws IOException См. общий контракт метода readShort класса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Определено:
-
readShortв интерфейсеDataInput - Возвращает:
- следующие два байта этого потока ввода, интерпретируемые как знаковое 16-битное число.
- Исключение:
-
EOFException- если этот поток ввода достигает конца, прежде чем прочитать два байта. -
IOException- поток закрыт, а содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. - См. также:
FilterInputStream.in
readUnsignedShort
public final int readUnsignedShort()
throws IOException См. общий контракт метода readUnsignedShort класса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Указано:
-
readUnsignedShortв интерфейсеDataInput - Возвращает:
- следующие два байта этого потока ввода, интерпретированные как целое беззнаковое 16-битное число.
- Выбрасывает:
-
EOFException- если поток ввода достигает конца перед чтением двух байтов. -
IOException- поток закрыт, и содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. - См. также:
FilterInputStream.in
readChar
public final char readChar()
throws IOException См. общее соглашение метода readChar интерфейса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Указано:
-
readCharв интерфейсеDataInput - Возвращает:
- следующие два байта этого потока ввода, интерпретированные как
char. - Выбрасывает:
-
EOFException- если поток ввода достигает конца перед чтением двух байтов. -
IOException- поток закрыт, и содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. - См. также:
FilterInputStream.in
readInt
public final int readInt()
throws IOException См. общее соглашение метода readInt интерфейса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Указано:
-
readIntв интерфейсеDataInput - Возвращает:
- следующие четыре байта этого потока ввода, интерпретированные как
int. - Выбрасывает:
-
EOFException- если поток ввода достигает конца перед чтением четырёх байтов. -
IOException- поток закрыт, и содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. - См. также:
FilterInputStream.in
readLong
public final long readLong()
throws IOException См. общее соглашение метода readLong интерфейса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Указано:
-
readLongв интерфейсеDataInput - Возвращает:
- следующие восемь байтов этого потока ввода, интерпретированные как
long. - Выбрасывает:
-
EOFException- если поток ввода достигает конца перед чтением восьми байтов. -
IOException- поток закрыт, и содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. - См. также:
FilterInputStream.in
readFloat
public final float readFloat()
throws IOException См. общее соглашение метода readFloat интерфейса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Указано:
-
readFloatв интерфейсеDataInput - Возвращает:
- следующие четыре байта этого потока ввода, интерпретированные как
float. - Выбрасывает:
-
EOFException- если поток ввода достигает конца перед чтением четырёх байтов. -
IOException- поток закрыт, и содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. - См. также:
-
readInt(),Float.intBitsToFloat(int)
readDouble
public final double readDouble()
throws IOException См. общее соглашение метода readDouble интерфейса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Указано:
-
readDoubleв интерфейсеDataInput - Возвращает:
- следующие восемь байтов этого потока ввода, интерпретированные как
double. - Выбрасывает:
-
EOFException- если поток ввода достигает конца перед чтением восьми байтов. -
IOException- поток закрыт, и содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. - См. также:
-
readLong(),Double.longBitsToDouble(long)
readLine
@Deprecated
public final String readLine()
throws IOException Устаревший. Этот метод неправильно преобразует байты в символы. Начиная с JDK 1.1, предпочтительный способ чтения строк текста — через метод BufferedReader.readLine(). Программы, использующие класс DataInputStream для чтения строк, можно преобразовать в использование класса BufferedReader путём замены кода вида:
DataInputStream d = new DataInputStream(in);на:
BufferedReader d
= new BufferedReader(new InputStreamReader(in)); См. общее соглашение метода readLine интерфейса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Указано:
-
readLineв интерфейсеDataInput - Возвращает:
- следующую строку текста из этого потока ввода.
- Выбрасывает:
-
IOException- если произошла ошибка ввода-вывода. - См. также:
-
BufferedReader.readLine(),FilterInputStream.in
readUTF
public final String readUTF()
throws IOException См. общее соглашение метода readUTF интерфейса DataInput.
Байты для этой операции считываются из содержащегося потока ввода.
- Указано:
-
readUTFв интерфейсеDataInput - Возвращает:
- строку Unicode.
- Выбрасывает:
-
EOFException- если поток ввода достигает конца перед чтением всех байтов. -
IOException- поток закрыт, и содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. -
UTFDataFormatException- если байты не представляют собой допустимое кодирование строки модифицированной UTF-8. - См. также:
readUTF(java.io.DataInput)
readUTF
public static final String readUTF(DataInput in)
throws IOException Считывает из потока in представление строки символов Unicode, закодированной в формате модифицированной UTF-8; эта строка символов затем возвращается как String. Подробности представления модифицированной UTF-8 точно такие же, как для метода readUTF класса DataInput.
- Параметры:
-
in- поток данных. - Возвращает:
- строку Unicode.
- Выбрасывает:
-
EOFException- если поток ввода достигает конца до прочтения всех байтов. -
IOException- поток закрыт, и содержащийся поток ввода не поддерживает чтение после закрытия, или произошла другая ошибка ввода-вывода. -
UTFDataFormatException- если байты не представляют собой допустимое кодирование строки Unicode в модифицированной UTF-8. - См. также:
readUnsignedShort()
© 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.