Язык SQL

Файловая структура


Файловая структура — это комбинация структур данных и алгоритмов, применяемых при выполнении приложением ввода и вывода данных. Для достижения нужной скорости работы приложений и обеспечения хранения и извлечения объектов в неповрежденном виде необходимо тщательно проектировать файловые структуры.

Объекты в памяти и объекты в файлах неизбежно различаются. В частности, поле находящегося в памяти объекта, ссылающегося на другой объект, представляется адресом этого второго объекта в памяти. В файловом представлении эти ссылки должны преобразовываться в файловые адреса или организовываться неким иным образом, чтобы информационное содержимое объектов сохранялось при записи объекта в файл и повторной загрузке в память.

Представление объекта в файле состоит из последовательности значений полей, сгруппированных в запись. В этой главе описаны четыре стратегии представления полей: ограниченное текстовое, двоичное фиксированной длины, двоичное с указанием длины и определяемое текстовое.

Файл может содержать записи фиксированной или переменной длины. Работа с записями фиксированной длины практически не дает преимуществ приложениям. В свою очередь, запись переменной длины можно представить в виде текста с разделителями, используя специальный разделитель записей, или с указанием длины, где длина представляет собой двоичное значение. Более предпочтительной является стратегия хранения записей переменной длины с использованием двухбайтового двоичного значения для указания длины, за которым следует последовательность байт, содержащая значение записи.

Ввод и вывод двоичных значений можно обеспечить с помощью классов и интерфейсов потоков данных. Интерфейс java.io.DataOutput поддерживает методы для записи значений простых типов и массивов в двоичном виде. Интерфейс j ava. io. Datainput содержит соответствующие методы чтения.

Прямой доступ по адресу к записям файлов поддерживается с помощью класса RandomAccessFile, реализующего как интерфейс Datainput, так и DataOutput. Этот класс также поддерживает операции по перемещению указателя файла, что требуется для прямого доступа.

Интерфейс Serializable и классы объектных потоков поддерживают чтение и запись объектов. К сожалению, объектные потоки поддерживают только последовательный доступ. Ни прямой доступ, ни обновления не допускаются. Это ограничение делает объектные потоки непригодными для использования в качестве универсальных файловых структур.

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