|
Spec-Zone .ru
спецификации, руководства, описания, API
|
public interface DataInput
DataInput интерфейс предусматривает чтение байтов от двоичного потока и восстановления от них данные в любых из типов примитивов Java. Есть также средство для того, чтобы восстановить a String от данных в измененном формате UTF-8. Это обычно верно для всех подпрограмм чтения в этом интерфейсе, что, если конец файла достигается прежде, чем требуемое число байтов было считано, EOFException (который является своего рода IOException) бросается. Если какой-либо байт не может быть считан ни по какой причине кроме конца файла, IOException кроме EOFException бросается. В частности IOException может быть брошен, если входной поток был закрыт.
Реализации интерфейсов DataInput и DataOutput представляют строки Unicode в формате, который является небольшой модификацией UTF-8. (Для получения информации относительно стандартного формата UTF-8, см. раздел 3.9 Формы Кодирования Unicode Стандарта Unicode, Версии 4.0). Отметьте, что в следующих таблицах, старший значащий бит появляется в далеком левом столбце.
Все символы в диапазоне '\u0001' к '\u007F' представляются единственным байтом:
Битовые значения Байт 1
0 биты 6-0
Нулевой символ '\u0000' и символы в диапазоне '\u0080' к '\u07FF' представляются парой байтов:
Битовые значения Байт 1
1 1 0 биты 10-6 Байт 2
1 0 биты 5-0
char значения в диапазоне '\u0800' к '\uFFFF' представляются на три байта:
Битовые значения Байт 1
1 1 1 0 биты 15-12 Байт 2
1 0 биты 11-6 Байт 3
1 0 биты 5-0
Различиями между этим форматом и стандартным форматом UTF-8 является следующее:
'\u0000' кодируется в 2-байтовом формате, а не 1 байт, так, чтобы закодированные строки никогда не встраивали, обнуляет. DataInputStream, DataOutput| Модификатор и Тип | Метод и Описание |
|---|---|
boolean |
readBoolean()
Чтения один входной байт и возвраты
true если тот байт является ненулевым, false если тот байт является нулем. |
byte |
readByte()
Чтения и возвраты один входной байт.
|
char |
readChar()
Чтения два входных байта и возвраты a
char значение. |
double |
readDouble()
Чтения восемь входных байтов и возвраты a
double значение. |
float |
readFloat()
Чтения четыре входных байта и возвраты a
float значение. |
void |
readFully(byte[] b)
Чтения некоторые байты от входного потока и хранят их в буферный массив
b. |
void |
readFully(byte[] b, int off, int len)
Чтения
len байты от входного потока. |
int |
readInt()
Чтения четыре входных байта и возвраты
int значение. |
Строка |
readLine()
Читает следующую строку текста от входного потока.
|
long |
readLong()
Чтения восемь входных байтов и возвраты a
long значение. |
short |
readShort()
Чтения два входных байта и возвраты a
short значение. |
int |
readUnsignedByte()
Чтения один входной байт, нуль - расширяет это, чтобы ввести
int, и возвращает результат, который находится поэтому в диапазоне 0 через 255. |
int |
readUnsignedShort()
Чтения два входных байта и возвраты
int значение в диапазоне 0 через 65535. |
Строка |
readUTF()
Чтения в строке, которая была закодирована, используя измененный формат UTF-8.
|
int |
skipBytes(int n)
Предпринимает попытку перескочить
n байты данных от входного потока, отбрасывая пропущенные байты. |
void readFully(byte[] b)
throws IOException
b. Число чтения байтов равно длине b. Этот метод блоки до одного из следующих условий происходит:
b.length байты входных данных доступны, когда нормальный возврат делается. EOFException бросается. IOException кроме EOFException бросается. Если b null, a NullPointerException бросается. Если b.length нуль, тогда никакие байты не читаются. Иначе, первое побайтовое чтение сохранено в элемент b[0], следующий в b[1], и так далее. Если исключение выдается от этого метода, то может случиться так что некоторые, но не все байты b были обновлены с данными от входного потока.
b - буфер, в который читаются данные.EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.void readFully(byte[] b,
int off,
int len)
throws IOException
len байты от входного потока. Этот метод блоки до одного из следующих условий происходит:
len байты входных данных доступны, когда нормальный возврат делается. EOFException бросается. IOException кроме EOFException бросается. Если b null, a NullPointerException бросается. Если off отрицательно, или len отрицательно, или off+len больше чем длина массива b, тогда IndexOutOfBoundsException бросается. Если len нуль, тогда никакие байты не читаются. Иначе, первое побайтовое чтение сохранено в элемент b[off], следующий в b[off+1], и так далее. Число чтения байтов, самое большее, равно len.
b - буфер, в который читаются данные.off - интервал, определяющий смещение в данные.len - интервал, определяющий число байтов, чтобы читать.EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.int skipBytes(int n)
throws IOException
n байты данных от входного потока, отбрасывая пропущенные байты. Однако, это может перескочить через некоторое меньшее число байтов, возможно обнулить. Это может следовать из любого из многих условий; достижение конца файла прежде n байты были пропущены, только одна возможность. Этот метод никогда не бросает EOFException. Фактическое число пропущенных байтов возвращается.n - число байтов, которые будут пропущены.IOException - если ошибка ввода-вывода происходит.boolean readBoolean()
throws IOException
true если тот байт является ненулевым, false если тот байт является нулем. Этот метод является подходящим для того, чтобы считать байт, записанный writeBoolean метод интерфейса DataOutput.boolean значение читало.EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.byte readByte()
throws IOException
-128 через 127, включительно. Этот метод является подходящим для того, чтобы считать байт, записанный writeByte метод интерфейса DataOutput.EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.int readUnsignedByte()
throws IOException
int, и возвращает результат, который находится поэтому в диапазоне 0 через 255. Этот метод является подходящим для того, чтобы считать байт, записанный writeByte метод интерфейса DataOutput если параметр writeByte был предназначен, чтобы быть значением в диапазоне 0 через 255.EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.short readShort()
throws IOException
short значение. Позволить a будьте первым побайтовым чтением и b будьте вторым байтом. Возвращенное значение: (short)((a << 8) | (b & 0xff))
Этот метод является подходящим для того, чтобы считать байты, записанные writeShort метод интерфейса DataOutput.EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.int readUnsignedShort()
throws IOException
int значение в диапазоне 0 через 65535. Позволить a будьте первым побайтовым чтением и b будьте вторым байтом. Возвращенное значение: (((a & 0xff) << 8) | (b & 0xff))
Этот метод является подходящим для того, чтобы считать байты, записанные writeShort метод интерфейса DataOutput если параметр writeShort был предназначен, чтобы быть значением в диапазоне 0 через 65535.EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.char readChar()
throws IOException
char значение. Позволить a будьте первым побайтовым чтением и b будьте вторым байтом. Возвращенное значение: (char)((a << 8) | (b & 0xff))
Этот метод является подходящим для того, чтобы считать байты, записанные writeChar метод интерфейса DataOutput.char значение читало.EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.int readInt()
throws IOException
int значение. Позволить a-d будьте первыми посредством четвертого чтения байтов. Возвращенное значение:
(((a & 0xff) << 24) | ((b & 0xff) << 16) |
((c & 0xff) << 8) | (d & 0xff))
Этот метод является подходящим для того, чтобы считать байты, записанные writeInt метод интерфейса DataOutput.int значение читало.EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.long readLong()
throws IOException
long значение. Позволить a-h будьте первыми посредством восьмого чтения байтов. Возвращенное значение:
(((long)(a & 0xff) << 56) |
((long)(b & 0xff) << 48) |
((long)(c & 0xff) << 40) |
((long)(d & 0xff) << 32) |
((long)(e & 0xff) << 24) |
((long)(f & 0xff) << 16) |
((long)(g & 0xff) << 8) |
((long)(h & 0xff)))
Этот метод является подходящим для того, чтобы считать байты, записанные writeLong метод интерфейса DataOutput.
long значение читало.EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.float readFloat()
throws IOException
float значение. Это делает это первым построением int значение точно способом readInt метод, затем преобразовывая это int оцените a float точно способом метода Float.intBitsToFloat. Этот метод является подходящим для того, чтобы считать байты, записанные writeFloat метод интерфейса DataOutput.float значение читало.EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.double readDouble()
throws IOException
double значение. Это делает это первым построением a long значение точно способом readlong метод, затем преобразовывая это long оцените a double точно способом метода Double.longBitsToDouble. Этот метод является подходящим для того, чтобы считать байты, записанные writeDouble метод интерфейса DataOutput.double значение читало.EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.String readLine() throws IOException
String. Отметьте, что, потому что этот метод обрабатывает байты, он не поддерживает ввод полного набора символов Unicode. Если с концом файла встречаются прежде, чем даже один байт может быть считан, то null возвращается. Иначе, каждый байт, который читается, преобразовывается в тип char дополнением нулями. Если символ '\n' встречается, это отбрасывается, и чтение прекращается. Если символ '\r' встречается, это отбрасывается и, если следующий байт преобразовывает в символ '\n', тогда это отбрасывается также; чтение тогда прекращается. Если с концом файла встречаются перед любым из символов '\n' и '\r' встречается, чтение прекращается. Как только чтение прекратилось, a String возвращается, который содержит все чтение символов и не отброшенный, взятый в порядке. Отметьте, что у каждого символа в этой строке будет значение меньше чем \u0100, то есть, (char)256.
null если с концом файла встречаются прежде, чем байт может быть считан.IOException - если ошибка ввода-вывода происходит.String readUTF() throws IOException
readUTF это, это читает представление символьной строки Unicode, закодированной в измененном формате UTF-8; эта строка символов тогда возвращается как a String. Во-первых, два байта читаются и используются, чтобы создать 16-разрядное целое число без знака точно способом readUnsignedShort метод. Это целочисленное значение вызывают длиной UTF и определяет число дополнительных байтов, которые будут считаны. Эти байты тогда преобразовываются в символы, рассматривая их в группах. Длина каждой группы вычисляется от значения первого байта группы. Байт после группы, если таковые вообще имеются, является первым байтом следующей группы.
Если первый байт группы соответствует комбинацию двоичных разрядов 0xxxxxxx (где x означает, "может быть 0 или 1"), тогда группа состоит из только того байта. Байт расширяется до нуля, чтобы сформировать символ.
Если первый байт группы соответствует комбинацию двоичных разрядов 110xxxxx, тогда группа состоит из того байта a и второй байт b. Если нет никакого байта b (потому что байт a был последний из байтов, которые будут считаны), или если байт b не соответствует комбинацию двоичных разрядов 10xxxxxx, тогда a UTFDataFormatException бросается. Иначе, группа преобразовывается в символ:
(char)(((a& 0x1F) << 6) | (b & 0x3F))
Если первый байт группы соответствует комбинацию двоичных разрядов 1110xxxx, тогда группа состоит из того байта a и еще два байта b и c. Если нет никакого байта c (потому что байт a был один из последних двух из байтов, которые будут считаны), или любой байт b или байт c не соответствует комбинацию двоичных разрядов 10xxxxxx, тогда a UTFDataFormatException бросается. Иначе, группа преобразовывается в символ:
(char)(((a & 0x0F) << 12) | ((b & 0x3F) << 6) | (c & 0x3F))
Если первый байт группы соответствует образец 1111xxxx или образец 10xxxxxx, тогда a UTFDataFormatException бросается. Если с концом файла встречаются в любое время во время этого всего процесса, то EOFException бросается.
После того, как каждая группа была преобразована в символ этим процессом, символы собираются в том же самом порядке, в котором их соответствующие группы были считаны из входного потока, чтобы сформировать a String, который возвращается.
writeUTF метод интерфейса DataOutput может использоваться, чтобы записать данные, которые являются подходящими для того, чтобы читать этим методом.
EOFException - если этот поток достигает конца прежде, чем считать все байты.IOException - если ошибка ввода-вывода происходит.UTFDataFormatException - если байты не представляют допустимое измененное кодирование UTF-8 строки.
Для дальнейшей ссылки API и документации разработчика, см. Java Документация SE. Та документация содержит более подробные, предназначенные разработчиком описания, с концептуальными краткими обзорами, определениями сроков, обходных решений, и рабочих примеров кода.
Авторское право © 1993, 2013, Oracle и/или его филиалы. Все права защищены.
Проект сборка-b92