Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №13.doc
Скачиваний:
8
Добавлен:
14.09.2019
Размер:
236.03 Кб
Скачать

Изменение данных в файле произвольного доступа

Для изменения данных в записях файла (редактирование, добавление, удаление записей) применяется оператор Put #. При его использовании необходимо иметь в виду, что данные в записи будут заменены на те, которые мы передаем в файл. Подчеркнем, что новая запись с данными не создается.

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

Put #номер_файла, последняя_запись + 1, имя_переменной

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

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

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

1. Создайте новый файл с помощью оператора Open.

2. Перепишите все непустые записи в новый файл, используя оператор Put #.

3. Закройте исходный файл и удалите его при помощи оператора Kill.

4. Переименуйте новый файл в исходный оператором Name.

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

 

Работа с двоичными файлами

Двоичный файл в корне отличается от файлов последовательного и произвольного доступа. Посмотрите на рисунок. Здесь в качестве примера двоичного файла с помощью редактора Notepad системы Windows открыт выполняемый файл Visual Basic 6.

Пример двоичного файла

Из рисунка видно, что нет смысла просматривать файл в чистом виде, его понимает только специальная программа. Двоичный файл не организован в строки, как файл последовательного доступа. Здесь нельзя выделить строки, записи или иную информационную структуру кроме байтов или блоков байтов.

Двоичный файл открывается только в двух режимах:

  • Binary — двоичный доступ по номеру байта;

  • Random произвольный доступ.

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

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

 

Открытие двоичного файла

Двоичный файл открывается иначе, чем файл последовательного доступа. Синтаксис оператора Open для двоичного файла выглядит следующим образом:

Open имя_файла For Binary As номер_файла

где:

  • имя_фалйаполное имя файла;

  • номер_файла — номер файла.

Чтение данных из двоичных файлов

Чтение данных из двоичных файлов выполняется с помощью оператора Get #, имеющего следующий синтаксис:

Get #номер_фалйа, [номер_записи], имя_переменной

где:

  • номер_файла — номер файла;

  • номер_записи — размер записи в байтах;

  • имя_переменной — переменная, в которую читаются данные из файла.

 

Запись данных в двоичные файлы

Для записи данных в двоичные файлы используется оператор Put #, имеющий следующий синтаксис:

Put [#]номер_файла, [номер_записи], имя_переменной

где:

  • номер_файла — номер файла;

  • номер_записи — размер записи в байтах;

  • имя_переменной — переменная, в которой хранятся данные, записываемые в файл.

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

Оператор Put # работает в паре с оператором Get #.

Работа с атрибутами файлов

Для работы с атрибутами файлов используются функции GetAttr и SetAttr. Синтаксис функции GetAttr, возвращающей атрибуты файлов, следующий:

GetAttr (имя_файла)

где имя_файла — путь, включающий имя файла, папку, устройство. По умолчанию применяется текущая папка и устройство.

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

Таблица 3. Константы атрибутов файлов

Константа

Описание

Значение

vbNormal

Обычный файл

0

vbReadOnly

Файл только для чтения

1

vbHidden

Скрытый файл

2

vbSystem

Системный файл

4

vbDirectory

Каталог (папка)

16

vbArhive

Архивный файл

32

 

Аналогично работает функция setAttr, выполняющая установку атрибутов файлов. Синтаксис этой функции следующий:

SetAttr имя_файла, атрибуты

где:

  • имя_файла — путь, включающий имя файла, папку, устройство. По умолчанию используется текущая папка и устройство;

  • атрибуты— число или выражение, задающее сумму атрибутов.