Программирование на Java

       

DataInputStream и DataOutputStream


До сих пор речь шла только о считывании и записи в поток данных в виде byte. Для работы с другими примитивными типами данных Java определены интерфейсы DataInput и DataOutput и их реализации – классы-фильтры DataInputStream и DataOutputStream. Их место в иерархии классов ввода/вывода можно увидеть на рис.15.1.

Интерфейсы DataInput и DataOutput определяют, а классы DataInputStream и DataOutputStream, соответственно, реализуют методы считывания и записи значений всех примитивных типов. При этом происходит конвертация этих данных в набор byte и обратно. Чтение необходимо организовать так, чтобы данные запрашивались в виде тех же типов, в той же последовательности, как и производилась запись. Если записать, например, int и long, а потом считывать их как short, чтение будет выполнено корректно, без исключительных ситуаций, но числа будут получены совсем другие.

Это наглядно показано в следующем примере:

Пример 15.9.

(html, txt)

Результат выполнения программы:

Чтение в правильной последовательности:

readByte: -128 readInt: 128 readLong: 128 readDouble: 128.0

Чтение в измененной последовательности:

readInt: -2147483648 readDouble: -0.0 readLong: -9205252085229027328

Итак, значение любого примитивного типа может быть передано и считано из потока данных.



Содержание раздела