Язык SQL

Чтение и запись двоичных величин с помощью потоков данных


Язык Java предоставляет возможность считывать и записывать простые объекты данных в виде двоичных величин с помощью классов потоков данных Datalnputstream и DataOutputstream. Частично определение класса DataOutputstream представлено на 11.6. Методы write для числовых величин записывают значения, состоящие из определенного количества байт: writeByte — из одного, writeShort — из двух, writelnt — из четырех и writeLong — из восьми. Метод writeByte записывает символьную строку в виде последовательности байт, содержащей такое же количеств байт, сколько символов в string.

public class DataOutputstream extends FilterOutputStream {

public final void writeBoolean (boolean v) throws IOExcepnion; public final void writeByte (int v) throws IOExcepnion; public final void writeShort (int v) throws IOExcepnion; public final void writelnt (int v) throws IOExcepnion; public final void writeByte (int v) throws IOExcepnion; public final void writeLong (long v) throws IOExcepnion; public final void writeFloat (float v) throws IOExcepnion; public final void writeDouble (double v) throws IOExcepnion; public final void writeBytes (String v) throws IOExcepnion;

U  .

Puc. 11.6. Фрагмент определения класса DataOutputstream

Можно записать объект Movie в DataOutputstream, используя двоичное представление с указанием длины, как в представленном на 11.7 методе write. Считывание объекта — более сложная процедура, поскольку нужно сначала считать длину, чтобы определить, сколько байт должно быть прочитано в качестве значения. Чтение и запись значения типа string в виде значения потока с указанием дины, естественно, не зависит от того, какой член используется для получения или предоставления значения. 11.4.2 операции с указанием длины будут включены в новый Java-класс.

public class Movie { …

public void write(DataOutputstream out) throws IOException {

//запись объекта в виде полей с указанием длины и фиксированной длины out.writeShort(name.length()); out.writeBytes(name); out.writelnt(id); out.writeShort(genre.length()); out.writeBytes(genre).

Комментарии закрыты