Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на BASIC / Visual Basic / Visual Basic 6.0 / БВГ / БурковВГ_Материалы_Расширений_электронных_лекций / БурковВГ_Лекция_Данные символьного типа и работа с файлами в VB 6.0..doc
Скачиваний:
90
Добавлен:
02.05.2014
Размер:
143.87 Кб
Скачать

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

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

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

Close [FileNamberList]

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

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

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

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

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

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

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

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

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

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

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

Функция 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или операторLineInput#, а для оператора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 ‘открытие файла на чтение

DoWhileNotEOF(1) ‘организация цикла на чтение файла до конца

LineInput#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

9