УРОК 10. Работа с файлами
Иногда
требуется записать данные в файл или прочитать данные из файла. Для
этого существуют несколько операторов, которые рассмотрим ниже.
OPEN “Rab1.txt” FOR OUTPUT AS #1
FOR i1% = 1 to 10
PRINT #1, i1%
NEXT i1%
CLOSE #1
Данная программа выводит первые десять положительных чисел в файл под названием «Rab1.txt». В первом операторе производится открытие файла с именем «Rab1.txt» как выводной (OUTPUT).
Это означает, что если файл с таким именем существует, то его
содержимое будет уничтожено и в дальнейшем по мере работы программы
запись данных будет производиться с начала файла. Если файл не
существует, то он создается и в него будет записана информация.
Ключевое слово «AS» определяет, под каким номером будет обозначаться данный файл, в дальнейшем в операторе PRINT
указывется номер файла. Можно открыть несколько файлов одновременно, в
этом случае каждый файл будет иметь свой индивидуальный номер.
Далее
в цикле происходит запись в файл десяти первых положительных чисел,
причем каждое число будет записано на новой строчке. Если оператор
записи в файл написать в виде: «PRINT #1, i1%,», в котором появилась запятая, то данные числа будут выведены один за другим.
В конце программы необходимо закрыть файл при помощи оператора CLOSE.
Это делать не обязательно, так как после выполнения программы все файлы
будут закрыты автоматически. Но лучше привыкать к определенной культуре
программирования, так как при написании значительного числа программ с
большим количеством файлов данный навык будет уместен.
OPEN “Rab1.txt” FOR INPUT AS #1
FOR i1% = 1 to 10
INPUT #1, i2%
PRINT i2%,
NEXT i1%
CLOSE #1
В приведенном примере файл, в который были записаны данные, теперь открыт как входной (INPUT), то есть с него будут читаться данные. Далее в цикле читаются данные (INPUT #1)
и в следующем они выводятся на экран. Если данные в файле находятся в
разных строчках, то на экран уже выводятся в одной строке. Для того,
чтобы вывести данные в десяти строчках на экране, нужно убрать запятую
в конце оператора PRINT.
В файл можно записать данные не только по одному значению в строчке, но и несколько значений. Приведем пример.
OPEN “Rab1.txt” FOR OUTPUT AS #1
FOR i1% = 1 to 10
PRINT #1, i1%,
NEXT i1%
CLOSE #1
Приведенный пример отличается от предыдущего тем, что в операторе «PRINT»
после переменной находится запятая. Вывод данных в файл будет
происходить также, как и на экран, однако длина строки может быть
произвольной. Для того, чтобы перейти для записи данных на следующую
строчку, следует использовать оператор «PRINT»,
в котором после переменных не должно находиться запятой или точки с
запятой. Кроме того, можно использовать данный оператор без параметров,
также как и при выводе на экран.
Для
чтения этих данных используется также ранее приведенная программа. Если
при чтении данных из файла окажется, что достигнут конец файла,
например, чтение данных производится в цикле от 1 до 11, то есть, будут
прочитаны десять данных, а одиннадцатое не будет найдено, то на экран
будет выдано сообщение: «Input past end of file».
Поэтому в тех случаях, когда неизвестно количество записанных данных, можно использовать следующую программу:
DO
INPUT #1, i2%
PRINT i2%,
LOOP UNTIL (EOF(1))
CLOSE #1
В этой программе происходит чтение до тех пор, пока не встретится конец файла «EOF(1)», где цифра один обозначает номер файла.
Помимо записи в начало файла, можно записывать в его конец. Для этого используется ключевое слово APPEND, как это указано ниже:
OPEN “Rab1.txt” FOR APPEND AS #1
Если файл создать и записать первые десять положительных чисел, то открыв файл для добавления (APPEND), можно дозаписать еще 10 значений в конец файла.
|