ТОП 10:

Функции и операторы для работы с файлами



Выполняемое действие Функции, операторы Действия
Открыть или создать файл Open Открывает файл
Закрыть файл Close Reset Закрывает файл Закрывает все открытые файлы, записывает содержимое буферов
Определение параметров вывода данных Format Spc Tab Width #  
Скопировать файл FileCopy Копирует файл
Получить информацию о файле EOF FileAttr FileDateTime FileLen FreeFile GetAttr Loc LOF Определяет метку конца файла Возвращает режим доступа открытого файла Возвращает дату и время создания файла Возвращает размер файла в байтах   Получает атрибуты файла Возвращает номер текущей позиции в файле Возвращает размер открытого файла в байтах
Организовать управление файлами Dir Kill Lock   Unlock Name Возвращает содержимое текущей директории Удаляет файл Блокирует файл при работе в многопользовательской среде Снимает блокировку с файла Задает (переименовывает) имя файла  
Прочитать данные из файла Input # Get # Line Input # Чтение данных из файла   Чтение строки из файла
Установить атрибуты файла SetAttr Устанавливает атрибуты файла
Найти позиции в файле Seek Устанавливает указатель на заданную номером позицию
Записать данные в файл Print # Put # Write # Записывает данные в файл

Работа с каждым из перечисленных выше типов файлов имеет свои особенности. Однако есть два действия, общие для всех типов – их открытие и закрытие.

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

Синтаксис (сокращенный)

Open pathname For mode As [#]FileNumber

где pathname – полное имя файла;

mode – режим доступа к файлу. Может принимать следующие значения:

- Append – открыть файл для добавления данных,

- Binary –открыть двоичный файл,

- Input – открыть файл для чтения данных,

- Output – открыть файл для записи данных,

- Random - открыть файл прямого доступа.

FileNumber – целочисленное выражение, задающее идентификатор файла. Может иметь значение от 1 до 511 включительно.

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

Если указанный в операторе Open файл не найден по заданному пути или не существует, он будет создан этим оператором для режимов доступа Append, Output, Random. Для режима доступа Input новый файл естественно не создается.

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

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

Все открытые файлы по окончании работы с ними необходимо закрыть!

Синтаксис оператора закрытия файлов

Close [FileNamberList]

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

Работа с файлами последовательного доступа

Файлы последовательного доступа – это, как правило, текстовые файлы, т.е. последовательности ASCII-символов, организованные в строки.

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

- Input – открыт для последовательного чтения данных;

- Output – открыть файл для последовательной записи данных, при этом информация записывается всегда с начала файла (предыдущая затирается, если в файле уже что-то записано);

- Append – открыть файл для добавления данных к уже имеющимся в файле (записи добавляются в конец файла).

Чтение данных

Если файл открывается для чтения, то он должен существовать, иначе возникнет ошибка!

Чтение данных из файла последовательного доступа выполняется с помощью функции Input и операторов Input # и Line Input #.

Функция Input считывает из файла заданное количество символов и обычно используется для чтения данных, записанных в файл оператором Print #.

Синтаксис

Input(number, #filenumber),

где

number - целое число, которое задает количество считываемых из файла символов;

filenumber - номер файла.

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

Оператор Input # используется, когда необходимо прочитать данные, имеющие структуру с разделителями (в качестве разделителей - запятые). Такие файлы получаются при использовании оператора записи Write #.

Синтаксис

Input #filenumber, varlist,

где

filenumber - номер файла,

varlist - список переменных.

При работе этого оператора сначала считывается целая строка, а затем подстроки, отделенные разделителями (запятыми), помещаются в соответствующие переменные списка.

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


Оператор Line Input # используется для построчного чтения данных из последовательного файла, обычно записанного оператором Print #.

Синтаксис

Line Input #filenumber, varname,

где

filenumber - номер файла,

varname - имя переменной.

Оператор посимвольно считывает всю строку данных из файла и помещает ее в строковую переменную. При этом разделителем строк в файле служит стандартный разделитель строк символ возврата каретки CHR(13) или последовательность символов возврата каретки и перевода строки CHR(13)+CHR(10), причем в переменную varname эти разделители не вставляются.

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

Запись данных

Данные в файл последовательного доступа записываются с помощью операторов

Print # и Write #.

Оператор Write # дополнительно автоматически вставляет в файл разделители.

Еще раз. Каждая из функций записи работает в паре с определенной функцией чтения. Для оператора Print # это функция Input или оператор Line Input #, а для оператора Write # – это оператор Input #.

Синтаксис

Print #filenumber, [outputlist]

Write #filenumber, [outputlist]

где filenumber – номер файла,

outputlist – список выражений или переменных для записи.

При выполнении записи данных в файл оператор и Write # автоматически вставляет символ перевода каретки CHR(13) и символ новой строки CHR(10).

Замечание. Write # и Input # лучше применять для файлов бинарных и прямого доступа.

Переход на заданную позицию в файле

Переход на заданную позицию в файле можно организовать с помощью оператора Seek.

Синтаксис

Seek #filenumber, position

где filenumber – номер файла,

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

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

Примеры операторов работы с файлами

1. Запись файла с помощью оператора Print #

Dim pathfile As String Private Sub Command1_Click() pathfile = "C:\WINDOWS\Рабочий стол\primer\primer.txt" ‘имя файла Open pathfile For Output As #1 ‘открытие файла на запись Print #1, " Проверка работы с файлами VB " ‘запись в файл For i = 1 To 3 Print #1, i ‘запись в файл Next Close #1 End Sub Запись идет по строкам, если в Print использовать «;» запишется одна строка. Каждый раз при выполнении программы файл будет перезаписываться заново. Если необходимо добавлять записи в файл, нужно открыть его на дозапись Open pathfile For Append As #1 При выполнении программы новые строки будут записываться в конец файла.

2. Чтение файла с помощью функции Input

Private Sub Command2_Click() Open pathfile For Input As #1 ‘открытие файла на чтение len_str = FileLen(pathfile) ‘определение числа символов в файле strfile = Input(len_str, #1) ‘считывание всех символов файла в строку Text2.Text = strfile ‘вывод строки в TextBox Close #1 End Sub

3. Чтение файла с помощью оператора Line Input #

Private Sub Command2_Click() Open pathfile For Input As #1 ‘открытие файла на чтение Do While Not EOF(1) ‘организация цикла на чтение файла до конца Line Input #1, strfile ‘построчное чтение записей из файла в переменную Text2.Text = Text2.Text + strfile + Chr(13) + Chr(10) ‘формирование очередной строки TextBox Loop Close #1 End Sub  
TextBox имеет свойство MultiLine =True

 

 

4. Запись файла с помощью оператора Write #

Dim pathfile As String Private Sub Command1_Click() pathfile = "C:\WINDOWS\Рабочий стол\primer\primer.txt" 'имя файла Open pathfile For Output As #1 'открытие файла на запись Write #1, "Проверка работы с файлами" 'запись в файл For i = 1 To 3 Write #1, "Строка", i 'запись в файл Next Close #1 End Sub

5. Чтение файла с помощью оператора Input #

Private Sub Command2_Click() Open pathfile For Input As #1 Do While Not EOF(1) Input #1, strfile Picture1.Print strfile Loop Close #1 End Sub

15.







Последнее изменение этой страницы: 2016-08-12; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 54.237.183.249 (0.009 с.)