Файлы с произвольным доступом


 

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

 

Open ИмяФайла For Random [Access Операция] [Блокировка]

As [#] Дескриптор[Len = ДлинаЗаписи]

 

где ИмяФайла – выражение строкового типа, представляющее имя файла.

Примеры:

 

1. "D:\MЭО15\Файлы\Цена.dat";

2. ”Цена.dat”

 

В первом случае указана папка, в которой хранится файл Цена.dat, а во втором предполагается, что он хранится в текущей папке.

Операция – одно из следующих значений:

Read (только чтение),

Write (только запись),

Read Write (чтение и запись).

Если операция не указана, то подразумевается Read Write.

Блокировка – используется в многозадачном режиме (например, в сети), запрещая доступ к файлу другим процессам, может принимать одно из следующих значений:

 

Shared – файл может использоваться всеми процессами для чтения и записи;

Lock Read – запрет чтения из файла для других процессов;

Lock Write – запрет записи в файл для других процессов;

Lock Read Write –запрет чтения и записи для других процессов.

 

Установка параметра блокировки со служебным словом Lock допустима, если указанную после слова Lock операцию в текущий момент не выполняет никакой другой процесс.

Дескриптор – выражение целого типа, определяющее номер канала ввода/вывода для открываемого файла, (например,1). Символ # перед дескриптором можно опустить.

ДлинаЗаписи – выражение целого типа, определяющее размер элемента в байтах (например, 25). Часто для задания длины записи используют встроенную функцию Len(х), которая определяет размер аргумента х. При открытии файла в качестве х указывается имя переменной пользовательского типа, которая будет использоваться для работы с файлом.

Примеры операторов открытия файлов с произвольным доступом:

 

1) Open txtИмя_файла For Random As # 1 Len= Len (udtСведения)

2) Open “Цена.dat” For Random Access Read As #2 Len = 25

 

В первом случае открывается файл, имя которого указано в текстовом поле txtИмя_файла. Длина записей в файле совпадает с размером переменной пользовательского типа udtСведения. Файл открывается как для чтения так и записи, поскольку параметр Access отсутствует. Для работы с файлом назначен первый канал ввода/вывода.

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

Для записи данных в файл используется оператор Put, а для чтения – оператор Get. Эти операторы имеют вид:

 

Put #Дескриптор, НомерЗаписи, Переменная

Get #Дескриптор, Номер Записи, Переменная

 

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

Оператор Get имеет противоположное назначение. Он указывает, что нужно найти запись под данным номером в файле, который определен дескриптором. А затем переслать содержимое этой записи из файла в поле памяти, которое занимает указанная переменная в оперативной памяти.

Примеры операторов Put и Get:

 

1) Put #1, i, udtСведения;

2) Get #1, i, udtСведения;

 

В первом случае осуществляется запись в файл, связанный с первым каналом ввода/вывода, информации, которая хранится в оперативной памяти в переменной пользовательского типа udtСведения. Эта информация записывается в файл на место с номером i.

Во втором случае происходит обратный процесс: с i-того места в файле считывается информация и пересылается в оперативную память в переменную udtСведения. Для закрытия файлов используется оператор Close, который имеет вид:

 

Close [#] [СписокДескрипторов]

 

Если список дескрипторов отсутствует, то закрываются все открытые файлы.

Примеры оператора Close:

 

1) Close # 1,2,5

2) Close

 

В первом случае закрываются только файлы, для которых были назначены каналы ввода/вывода 1, 2 и 5, а во втором – все файлы.

Для переименования файла используется оператор Name, который имеет вид:

 

Name СтароеИмя As НовоеИмя

 

Копирование файла осуществляется с помощью оператора FileCopy, который имеет вид:

 

FileCopy ИмяИсходногоФайла, ИмяЦелевогоФайла

 

Чтобы удалить файл применяют оператор Kill, который имеет вид:

 

Kill ИмяУдаляемогоФайла

 

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

Примеры операторов переименования, копирования и удаления файлов:

 

1) Name "Февраль.dat" As "Март.dat"

2) FileCopy "Налоги.dat", "Удержания.dat"

3) Kill "Налоги.dat"

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

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

 

intКол_зап = LOF(x)/Len (udtСведения)

 

Здесь LOF(х) – встроенная функция VB, с помощью которой определяется общая длина файла, связанного с каналом х (LOF – сокращение от англ. Length Of File – длина файла).

 



Дата добавления: 2020-10-14; просмотров: 337;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.025 сек.