VB - работа с файлами
Каждая программа должна сохранять данные на диск и
читать их с диска. Это необходимо, например, для сохранения
настроек программы, вряд ли пользователю понравится
программа, которую при следующем запуске придется настраивать
заново.
В данной статье речь пойдет о работе с текстовыми файлами
средствами Visual Basic.
Дескриптор файла
Для работы с файлами операционная система использует
каналы ввода/вывода, т.е. каждый открытый файл имеет
свой номер.
В Visual Basic существует функция FreeFile,
которая возвращает номер свободного канала, который
можно использовать для работы с файлом. Если свободных
каналов нет, то возникает ошибка.
FreeFile [ (RangeNumber) ]
RangeNumber -необязательный параметр, который
позволяет определить диапазон значений свободных каналов,
если RangeNumber = 0 (по умолчанию), то возвращается
номер канала из диапазона 1 - 255, а если 1, то из диапазона
256 - 511.
Пример:
MyFile = FreeFile ' Переменной
MyFile присвоен свободный канал и теперь ее можно использовать
для работы с файлами
Работа с текстовыми файлами
Наиболее часто приходится встречаться с текстовыми
файлами. Текстовые файлы состоят из набора символов
ASCII (American Standard Code for Information Interchange
- Американский стандартный код для обмена информацией).
Прежде чем начать записывать/считывать данные, файл
необходимо открыть, делается это при помощи оператора
Open (Имя_файла) For [Input | Output
| Append] As #Номер_файла, где:
Input - открыть файл для чтения, если файл не
существует, то возникает ошибка;
Output - для записи, если файл не существует,
то он будет создан, а если файл существует, то он будет
перезаписан;
Append - для добавления, если файл не существует
то он будет создан, а если файл существует, то данные
будут добавляться в конец файла.
Чтение текстовых файлов можно производить двумя способами:
читать посимвольно, для этого используется функция Input(Количество_считываемых_символов,
#Номер_файла) и построчно, для этого используется
функция Line Input #Номер_файла, Куда_считывать.
Например, если надо считать первую строку из какого-нибудь
файла в переменную S, то код будет таким:
Dim MyFile 'Объявляем
переменную для свободного файла
Dim S As
String 'Переменная для
хранения считанных данных
MyFile = FreeFile ' Присваиваем
свободный канал, для работы с файлами
Open ("C:\TEST.txt")
For Input As #MyFile
'Открываем файл TEST.TXT для чтения
Line Input #MyFile, S 'Считываем
первую строку из файла TEST.TXT в переменную S
Close #MyFile 'Закрываем
файл
Если, например, надо считать не первую, а пятую строку,
то код будет немного другой:
Dim MyFile
'Объявляем переменную для свободного файла
Dim i As
Integer 'Переменная для
цикла
Dim tS As
String 'Переменная для
считывания строк
Dim S As
String 'Переменная для
хранения окончательных данных
MyFile = FreeFile ' Присваиваем
свободный канал, для работы с файлами
Open ("C:\TEST.txt")
For Input As #MyFile 'Открываем
файл TEST.TXT для чтения
For i = 1 To
5
Line Input #MyFile, tS
'Читаем файл TEST.TXT построчно
If i => 5 Then
S = tS 'Если пятая строка, то
запоминаем ее в переменную S
Next i
Close #MyFile 'Закрываем
файл
А если надо считать все данные из файла, то:
Dim MyFile 'Объявляем
переменную для свободного файла
Dim S As
String 'Переменная для хранения считанных данных
MyFile = FreeFile ' Присваиваем
свободный канал, для работы с файлами
Open ("C:\TEST.txt")
For Input As #MyFile
'Открываем файл TEST.TXT для чтения
S = Input$(LOG(1), 1) 'Считываем
весь файл в переменную S
Close #MyFile 'Закрываем
файл
Для записи в файл существуют операторы Print #Номер_файла,
Данные и Write #Номер_файла, Данные.
Отличает эти операторы только то, что Write записывает
данные в кавычках, а Print без кавычек.
Ниже следующий код создаст на диске C:\ новый файл
TEST.TXT и запишет в него две строки, первую без кавычек,
а вторую в кавычках:
Dim MyFile 'Объявляем
переменную для свободного файла
MyFile = FreeFile ' Присваиваем
свободный канал, для работы с файлами
Open ("C:\TEST.txt")
For Output As #MyFile 'Открываем
файл TEST.TXT для записи
Print #MyFile, "Эта
строка записана оператором Print, она без кавычек…"
Write #MyFile, "Эта
строка записана оператором Write, она в кавычках…"
Close #MyFile 'Закрываем
файл
Вот собственно и все. Как вы уже наверно поняли, для
закрытия файла служит оператор Close #Номер_файла,
при этом, #Номер_файла указывать не обязательно.
The End
Статья немного сыровата, но для начинающих программистов
будет полезна. В следющий раз я расскажу о работе с
бинарными файлами.
Автор статьи: Немиро
Алексей
|