Язык SQL

Поддержка ввода и вывода записей класса Movie


Операции чтения и записи для класса Movie приведены на 11.10. Метод readRecord считывает длину байтового массива, содержащего потоковое представление записи (строки 3—5). Затем используется В yteAr ray Input St ream, чтобы позволить ранее определенному методу Movie. read производить чтение из байтового массива (строки 7—9).

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

В методе writeRecord запись заносится в байтовый массив (строки 14—18) посредством использования класса ByteArrayOutputstream и определенной ранее операции Movie.write. Результат вызова метода write извлекается как байтовый массив (строка 20), и длина массива, и сам массив записываются в выходной поток (строки 21 и 22).

В этом сайтепредставлена общая модель записи и считывания записей. Можно заметить, что зависимость представленных на 11.10 методов от класса Movie проявляется только в вызовах методов Movie, read (строка 9) и Movie.write (строка 18). В этом сайтеметоды классов объектов read и write будут выделены в интерфейс, а ввод/вывод записей переменной длины будет выделен в новый класс файлов.

1 class Movie {…

2 public void readRecord(Datainput in) throws IOException {

3 int len = in/readShort();

4 byte [] buffer = new byte[len];

5 in.readFully(buffer);

6 //включение буфера массива байтов во входной поток

7 DatalnputStream recStream .

8 =new DatalnputStream(new ByteArraylnputStream(buffer));

9 read (recStream); //считывание объекта Movie

10 }

11 public void writeRecord(DataOutput out)

12 throws IOException {

13 //помещение записи в байтовый поток

14 ByteArrayOutputstream byteStream

15 = new ByteArrayOutputstream!);

16 DataOutputstream recStream

17 = new DataOutputstream(byteStream);

18 write(recStream); //Запись объекта Movie

19 //занесение длины и самой записи в выходной поток

20 byte [] buffer = byteStream.toByteArray();

21 out.writeShort(buffer.length);

22 out.write(buffer);

23 }

24 };

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