Студопедия
rus | ua | other

Home Random lecture






Работа с файлами.


Date: 2015-10-07; view: 312.


Файлы широко применяются для решения различных задач. В них размещаются данные, предназначенные для длительного хранения. Каждому файлу присваивается уникальное имя, которое используется для обращения к нему. Использование файлов освобождает разработчика от хранения требуемых данных в тексте программы или многократном вводе их с клавиатуры, что само по себе весьма утомительно и приводит к появлению различных ошибок в программах. Гораздо удобнее ввести эту информацию один раз и сохранить ее в файле на диске.

Имена файлов состоят из двух частей, разделяемых точкой: filename.ext (имя_файла.расширение)
Имя файла может включать от 1 до 8 знаков, а соответствующее расширение - до трех знаков.

Имена файлов и расширения могут содержать следующие символы:

A-Z 0-9 () {} @ # $ % ^ ! - _ ' / ~

Файлы можно создавать, переименовывать, стирать; производить операции считывания и записи. Basic предлагает три различных способа сохранения и востребования информации с диска: последовательный, прямой и двоичный ввод/вывод файла. У каждого есть свои преимущества и недостатки.

Метод последовательных файлов - это способ прямого чтения и записи файлов. Команды последовательных файлов в Basic создают текстовые файлы: файлы ASCII-символов с парами "возврат каретки/перевод строки", разделяющими записи. Вероятно одной из основных причин использования последовательных файлов является степень их "переносимости" в другие программы, языки программирования и компьютеры. Они читаются программами подготовки текстов и редакторами, принимаются другими прикладными программами и могут посылаться через серийные порты на другие компьютеры.

В основе последовательных файлов лежит сама простота: пишите в них так, словно они - экран, и читайте с них так, словно они - клавиатура.

Создание последовательного файла:

1. ОТКРЫТЬ файл в режиме последовательного ВВОДА. Для создания файла необходимо использовать оператор OPEN.

В последовательных файлах есть два пути подготовки файла к выводу:

OUTPUT (ВЫВОД): Если файл не существует- создается новый файл. Если файл уже существует, его содержание уничтожается, а сам файл рассматривается как новый.

APPEND (ДОБАВИТЬ В КОНЕЦ): Если файл не существует- создается новый файл. Если файл уже существует, любые данные дописываются в конец этого файла.

2. Ввод данных в файл. Используйте WRITE# PRINT# или PRINT#USING для записи данных в последовательный файл.

3. ЗАКРЫТИЕ файла. Оператор CLOSE закрывает файловую переменную после завершения всех операций ввода/вывода.

Для чтения последовательного файла:

1. ОТКРЫТЬ файл в режиме последовательного ВВОДА. Подготовить файл для считывания.

2. Считывать данные с файла. Использовать операторы INPUT#, INPUT$, или LINE INPUT#.

3. ЗАКРЫТЬ файл. Оператор CLOSE закрывает файловую переменную после выполнения всех операций ввода/вывода.

Недостаток последовательных файлов в том, что возможен только последовательный доступ к данным.

Можно создавать последовательные файлы двух типов: 1 - последовательные файлы с разделенными полями, где все поля на каждой строке файла разделяются (ограничиваются) особыми символами, и 2- неразделенные последовательные файлы, когда каждый файл выглядит абсолютно одинаково и на экране, и на распечатке. Эти два типа файлов создаются с помощью операторов WRITE#иPRINT#. соответственно. Используйте INPUT#,INPUT$, илиLINE INPUT#для обратного считывания информации с последовательного файла любого типа.

Пример 1: записать строку в файл, считать строку из файла.

REM Работа с файлами. Пример 1.
REM Запись в файл
OPEN "file01.dat" FOR OUTPUT AS #1
A$ = "Это наша текстовая строка"
PRINT #1, A$
CLOSE #1
REM Чтение из файла
OPEN "file01.dat" FOR INPUT AS #1
INPUT #1, B$
PRINT b$ 'вывод на экран
CLOSE #1

В результате выполнения программы будет создан файл "file01.dat" и файл будет содержать строку Это наша текстовая строка. Затем файл будет открыт для чтения и из него будет прочитана и выведена на экран данная строка.

Пример 2. Напишем программу для записи в файл отметки ученика на уроке. В файле будет хранится следующая информация:

ФИО дата отметка
Иванов Иван 22 февраля
Петров Петя 3 марта
... ... ...

REM Работа с файлами. Пример 2.
REM Запись в файл
OPEN "journal.dat" FOR APPEND AS #1
INPUT "Введите ФИО", FIO$
INPUT "Введите дату", DAY$
INPUT "Введите отметку", MARK
WRITE #1, FIO$, DAY$, MARK
CLOSE #1
REM Чтение из файла
OPEN "journal.dat" FOR INPUT AS #1
INPUT #1, FIO$, DAY$, MARK
PRINT FIO$, DAY$, MARK 'вывод на экран
CLOSE #1

Эта программа будет создавать файл journal.dat, записывать введенные пользователем данные, а затем считывать из файла journal.dat данные и выводить их на экран. Но в данной версии программы из файла мы будем получать всегда первую строчку (порцию) данных. Исправим это. Будем использовать функцию EOF, проверяющую достигнут ли конец файла.

REM Работа с файлами. Пример 2_2.
REM Запись в файл
OPEN "journal.dat" FOR APPEND AS #1
INPUT "Введите ФИО", FIO$
INPUT "Введите дату", DAY$
INPUT "Введите отметку", MARK
WRITE #1, FIO$, DAY$, MARK
CLOSE #1
REM Чтение из файла
OPEN "journal.dat" FOR INPUT AS #1
DO WHILE NOT EOF(1)
INPUT #1, FIO$, DAY$, MARK
PRINT FIO$, DAY$, MARK 'вывод на экран
LOOP
CLOSE #1

Теперь программа выводит из файла все данные.

Продолжим работу. Упростим задачу пользователя - дату будем получать с помощью функции DATE$, которая возвращает текущую дату в формате mm-dd-yyyy.

REM Работа с файлами. Пример 2_3.
REM Запись в файл
OPEN "journal.dat" FOR APPEND AS #1
INPUT "Введите ФИО", FIO$
INPUT "Введите отметку", MARK
WRITE #1, FIO$, DATE$, MARK
CLOSE #1
REM Чтение из файла
OPEN "journal.dat" FOR INPUT AS #1
DO WHILE NOT EOF(1)
INPUT #1, FIO$, DAY$, MARK
PRINT FIO$, DAY$, MARK 'вывод на экран
LOOP
CLOSE #1

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

Результат работы программы:


Примечание: Кроме операторов для создания, считывания и записи файлов, Basic имеет средства для осуществления определенных DOS-подобных сервисных программ внутри программы. Оператор NAME переименовывает файлы, KILL - стирает файлы, MKDIR - создает каталоги, CHDIR - меняет текущий каталог, RMDIR - уничтожает каталоги.

Примечание: рассмотрим еще два примера (назначение ясно из коментариев).

'Пример открыть файл, назначенный принтеру
OPEN "LPT1:" AS #1
'послать строку на принтер
PRINT# 1,"THIS IS A TEST"
CLOSE# 1 'закрыть переменную файла

'открыть два разных файла
OPEN "CLOSEFIL.ONE" FOR AS #1
OPEN "CLOSEFIL.TWO" FOR AS #2
'вписать строку в каждый файл
PRINT# 1,"THIS IS A TEST"
PRINT# 2,"THIS IS A TEST"
'закрыть все файлы
CLOSE
END


<== previous lecture | next lecture ==>
Создание движущихся изображений. | Комбинированные типы.
lektsiopedia.org - 2013 год. | Page generation: 0.004 s.