Лекция 3. Файлы

Материалы этой статьи опубликованы в [12], [].

§ 1.

1.1.

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

Рассмотрим основные принципы работы с файлами.

В табл. 9.5 приведены наиболее часто используемые функции, обеспечивающие операции с файлами.

Таблица 9.5. Функции работы с файлами

Функция Описание
Open PathName For Mode [Access Am] [Lock] As #FileNumber [Len = reclen] Seek #FileNumber Position Seek (#FileNumber) FreeFile[(Range) ] Get #FileNumber, [RecNumber], VarName Put #FileNumber, [RecNumber], VarName LineInput #FileNumber VarName Input #FileNumber, VarList Input(Number, #FileNumber) Print #FileNumber, [OutputList] Write #FileNumber, [OutputList] FileLen(PathName) LOF(FileNumber) EOF(FileNumber) Dir [ (Path [.Attributes]) ] CurDir ChDir Path MkDir Path RmDir path Kill PathName Функция Open открывает файл для выполнения операций чтения/записи. Параметр PathName задает имя файла, к которому надо получить доступ. Параметр Mode задает режим доступа к файлу: Input — ввод данных (чтение), Output — вывод данных (запись), Binary — чтение/запись файла прямого доступа, Random — чтение/запись текстового двоичного файла. Параметр Am задает операции, разрешенные для открытого файла: Read (чтение), Write (запись), Read Write (чтение/запись). Параметр FileNumber — номер файла (число в диапазоне от 1 до 511) используется в файловых операциях в качестве идентификатора файла. Параметр reclen задает длину записи файла (размер буфера), если файл открывается в режиме прямого доступа (Binary) Функция Seek устанавливает указатель текущей позиции для выполнения операции чтения/записи файла, открытого в режиме прямого доступа (Binary). Параметр FileNumber — идентификатор файла. Параметр Position задает позицию (номер байта или записи), которую надо прочитать или перезаписать Функция Seek возвращает текущую позицию указателя чтения/записи для файла Функция FreeFile возвращает число, которое можно использовать в качестве идентификатора файла (параметра FileNumber в функции Open) Функция Get считывает данные из файла: FileNumber — номер (идентификатор) файла, RecNumber — позиция (номер байта или номер записи, если файл открыт в режиме Binary), в которую надо, установить указатель чтения перед выполнением операции, VarName — переменная, в которую надо поместить данные Функция Put записывает данные в файл: FileNumber — номер (идентификатор) файла, RecNumber — позиция (номер байта или номер записи, если файл открыт в режиме Binary), в которую надо, установить указатель чтения перед выполнением операции, VarName — переменная, в которой находятся данные Функция Line с параметром Input считывает строку из файла FileNumber и записывает ее в переменную VarName. Чтение происходит до тех пор, пока не будет обнаружен символ "новая строка" (код 13) Функция Input считывает данные из файла. FileNumber — номер файла, VarList — список переменных, значение которых надо прочитать из файла. Например: Input #1, a,b,c Функция Input считывает символьные или байтовые данные из файла, открытого в режиме Input или Binary. Number — число считываемых символов или байтов, FileNumber — номер файла. Например: IDChar=Input(1,#1) Функция записывает в заданный параметром FileNumber текст. Параметр OutputList (список вывода) — список выражений символьного типа. Например: Print #1, "a="+Str(a),"b="+Str(b) Функция записывает данные в файл. OutputList —записываемые данные (список переменных). Символьные данные в файле будут заключены в кавычки. Например: Write #1, а, b Функция FileLen возвращает длину файла (в байтах) Функция LOF возвращает длину файла (в байтах) Функция EOF проверяет положение указателя чтения/записи. Значение функции равно True, если достигнут конец файла (прочитан последний элемент данных) Функция Dir возвращает имя файла или папки, соответствующее критерию, заданному параметрами Path и Attributes. Если файлов (каталогов), удовлетворяющих указанным параметрам нет, то значение функции – “пустая” строка (“ ”).Если в качестве параметра Path задан шаблон имени файла (например, c:\temp\*.bmp), то значение функции - имя файла, соответствующее шаблону. Чтобы получить имена остальных файлов, соответствующих шаблону, надо вызвать функцию Dir ещё раз, но без параметров. Например: fn=Dir(“C:\temp\*.bmp”) fn=fn+Chr (13)+ Dir Файл Attributes задаёт (уточняет) тип файла: Normal (0), ReadOnly (1), Hidden(2), System(4), Directory (16) -каталог. Примеры: Dir (“e:\test.txt”) -возвращает “test.txt”, если файл test. txt существует на диске е; Dir (“e:\t\*. txt”)- возвращает имя первого найденного в каталоге e:\t файла с расширением txt; Dir (“e:\”, vbDirectory) –возвращает имя первого (по порядку) подкаталога корневого каталога диска е: Функция CurDir (без параметров) возвращает полное имя текущей (рабочей) папки. Сразу после запуска программы текущая папка - это папка, из которой запущена программа. Функция ChDir задаёт текущий (рабочий) каталог Функция MkDir создаёт новый каталог. Параметр Path задаёт путь к новому каталогу и его имя. При попытке создать каталог в несуществующей папке возникнет ошибка Функция RmDir удаляет каталог. Параметр Path задаёт полное имя каталога, который надо удалить. При попытке удалить каталог, в котором есть файлы, возникнет ошибка. В этом случае нужно сначала из него удалить файлы (функция Kill), и только после этого можно удалить сам каталог Функция Kill удаляет файл. Параметр PathName (полное имя файла) задаёт файл, который надо удалить. Если в качестве имени задать шаблон, то будут удалены все файлы, имена которых соответствуют указанному шаблону. Например: Kill “c:\temp\*.tmp”

В Visual Basic реализованы три типа доступа к файлам:

· последовательный – для чтения и записи текстовых файлов;

· произвольный – для чтения и записи текста с записями структурированной длины;

· двоичный – для чтения и записи произвольно структурированных файлов.

  • Имеются 3 разных типа файлов:
  • - последовательные файлы
  • - файлы с произвольным доступом
  • - бинарные файлы

Файлы бывают двух типов:

· Последовательного доступа

· Произвольного доступа

Мы в будем рассматривать только последовательный доступ. Данные в файле хранятся при этом в неструктурированном виде.

Доступ к файлам VBA подразумевает выполнение 3 действий:

- открытие файла

- чтение или запись файла

- закрытие файла

Работа с файлами данных всегда состоит из нескольких этапов:

· получение дескриптора файла;

· открытие файла;

· чтение или запись данных;

· закрытие файла.>

Рассмотрим все перечисленные этапы поочередно.

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

Функция Visual Basic FreeFile возвращает номер свободного канала, который можно использовать для работы с файлом.

intFh = FreeFile()

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

Команда открытия файла:

Open «имя путь.txt» for режим работы, номер цикла

Открытие файлов:

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

Open Filename for mode Access lock

As # filenum LEN = reclen

Filename – строка определяет название файла, который необходимо открыть.

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

APPEND – последовательный доступ к файлу. Если файл уже существует, то данные присоединяются в конец файла, если файл не существует, то они отсоединяются.

BINARU – бинарный доступ к файлу для чтения и записи.

INPUT – последовательный доступ к файлу только для чтения, если файл не существует, то возникает ошибка.

OUTPUT – последовательный доступ только для записи. Если файл существует, он удаляется и создается заново, если не существует, то просто создается.

RANDOM – произвольный доступ для чтения и записи данных. Этот режим используется по умолчанию, если аргумент mod не задан.

ACCESS – необязательный аргумент, определяющий операции которые размещены с открытым файлом.

READ – файл открыт только для чтения.

WRITE - файл открыт только для записи.

READWRITE - файл открыт только для чтения и записи.

Открытие файла. Способ открытия файла с последовательным доступом (для чтения, записи или добавления) задается при вызове оператора Open.

Open Имя_файла For [Input \ Output \ Append] As FileHandle

Если в операторе использовано слово Input, то файл открывается только для чтения из файла. Если файл не существует и открывается для чтения, то Visual Basic выдает сообщение об ошибке.

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

Если в операторе использовано слово Append, то файл открывается для добавления. Если файла с таким именем нет, то он создается.

В конце оператора указывается номер канала, возвращаемый функцией FreeFile. Приведем несколько примеров использования оператора Open при последовательном доступе.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: