Лекция № 22. Работа с файлами

К настоящему времени Вы заработали баллов: 0 из 0 возможных.

Страница 3. Файлы последовательного доступа

Последовательные файлы состоят из рядов строк текста, и их часто называют ASCII-файлами. Каждая строка текста завершается символом возврата каретки (ASCII 13), а файл заканчивается сим­волом Ctrl-Z (ASCII 26). Каждый символ текста занимает один байт. Текст можно просматривать и редактировать с помощью редактора Notepad (Блокнот).

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

Файл открывается оператором вида:

 

Open "filename" For mode As #number

 

filename – полное имя файла,

mode – режим доступа к файлу:

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

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

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

number – идентифицирует файл в программе и может принимать значения от 1 до 255. Номер связан с файлом только тогда, когда файл открыт.

 

В последовательный файл данные записываются с помощью оператора Print или Write. Каждый оператор записывает одну строку данных в файл, заканчивающуюся возвратом каретки. Формат операторов следующий:

 

Print #number, valuel, value2,...

Write #number, valuel, value2,...

 

Оператор Print записывает данные с метками между отдельными элементами. Он подходит для записи текстовых файлов с одним элементом на строку. Оператор Write хранит данные в формате, разделенном запятыми.

 

Файл закрывается оператором Close в формате

 

Close #number

 

Чтение последовательного файла, как и его создание, состоит из трех этапов: открытие файла, чтение данных и закрытие файла.

Файл открывается с помощью оператора следующего вида:

 Open "filename" For Input As #number

 

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

 Line Input #number, string

Input #number, variablel, variable2,...

 Line Input считывает строку полностью в переменную string и может использоваться для чтения текстовых файлов, когда они записаны с помощью оператора Print. Оператор считывает из файла по одному символу, пока не встретит символ «возврат каретки» или последовательность «возврат каретки» – перевод строки».

Input считывает данные и размещает их в переменных заданного списка.

Данные считываемые оператором записываются в файл с помощью оператора Write #.

Последовательные файлы всегда должны читаться с начала файла. Для обнаружения конца файла можно использовать функцию EOF. После завершения чтения файл нужно закрыть с помощью команды Close.

 

Пример 1.

Sub filee()
'открытие файла и запись в него информации
Number = FreeFile
Open "d:\3.txt" For Output As #Number
Print #Number, "Это хранится в файле"
Close #Number

'открытие файла и чтение из него информации
Number = FreeFile
Open "d:\3.txt" For Input As #Number
Input #Number, a$
MsgBox ("Чтение из файла: " & Chr(13) & a$)
Close #Number
End Sub


Пример 2.

Sub filee()
'открытие файла и запись в нее информации
Number = FreeFile
n$ = InputBox("Введите имя файла")
Open n$ For Output As #Number
Print #Number, "Это хранится в файле"
Close #Number
'открытие файла и чтение из него информации
Number = FreeFile
Open n$ For Input As #Number
Input #Number, a$
MsgBox ("Чтение из файла: " & Chr(13) & a$)
Close #Number
End Sub

                

 

Пример 3.

Sub filee()
Number = FreeFile
n$ = InputBox("Введите имя файла")
Open n$ For Output As #Number
Do
  marka$ = InputBox("Введите марку автомобиля (для выхода qwe)")
  If marka$ = "qwe" Then Exit Do
  nomer$ = InputBox("Введите номер автомобиля")
  tsvet$ = InputBox("Введите цвет автомобиля")
  god$ = InputBox("Введите год производства автомобиля")
  tsena$ = InputBox("Введите продажную цену автомобиля")
      'запись информации в файл
  Write #Number, marka$, nomer$, tsvet$, god$, tsena$
Loop
      'закрытие файла
Close #Number
MsgBox ("Внесение информации завершено")

Number = FreeFile
Open n$ For Input As #Number
i% = 1
Do Until EOF(Number)
  Input #Number, marka$, nomer$, tsvet$, god$, tsena$
  MsgBox "Данные об " & i% & " автомобиле" & Chr(13) & marka$ & Chr(9) & nomer$ & Chr(9) & tsvet$ & Chr(9) & god$ & Chr(9) & tsena$
i% = i% + 1
Loop
Close #Number
End Sub


 

 

Пример 4. Изменение содержания файла

Sub filee()
Open "d:\3.txt" For Input As #1
Open "d:\4.txt" For Output As #2
Do
  Input #1, marka$, nomer$, tsvet$, god$, tsena$
  If marka$ = "KIA" Then marka$ = "Opel"
  Print #2, marka$, nomer$, tsvet$, god$, tsena$
Loop Until EOF(1)
Close
'удаление исходного файла
Kill "d:\3.txt"
' переименование нового файла
Name "d:\4.txt" As "d:\3.txt"
End Sub

 

Вы прошли 100% лекции
100%