Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика.doc
Скачиваний:
45
Добавлен:
22.03.2016
Размер:
12.91 Mб
Скачать

Лекция 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 при последовательном доступе.

Open “Text . txt” For Input As intFH1

Open “C: / DAN / Text . txt” For Output As intFH2

Open “Proba . txt” For Append As intFH3

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

Open «Имя пути. txt» «Режим работы» С # номер файла. Например,

Open «S: / Windows / Рабочий стол / Учебный процесс / Вектор.txt». Input S #1.

Режим работы.

Output – для записи данных файлов.

Append - для добавления

Input – для чтения данных из файла. Число любое, целое (1-511)

Режим работы:

  1. Output – для записи данных (имеющиеся стираются)

  2. Append – для добавления информации в конец файла

  3. Input – для чтения данных из файла

В качестве номера файла можно использовать целое число от 1 до 511