Общие правила работы с файлами на внешних носителях 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Общие правила работы с файлами на внешних носителях



В системе Турбо-Пролог имеются предикаты для работы с файлами в целом:

deletefile(<имя_файла>) - уничтожает файл <имя_файла>;(<имя_файла>) - сохраняет на диске утверждения динамической базы данных;

renamefile(<старое_имя_файла>,<новое_имя_файла>) - переименование файла;

existfile(<имя_файла>) - тест на наличие файла с данным именем. Предикат успешен в случае, если файл с именем, заданным аргументом <имя_файла>, присутствует в директории;(<файловая_переменная>) - предикат сбрасывает содержимое внутреннего буфера, отведенного для данного устройства записи.

disk(<путь>) - выбор дисковода и пути доступа: если параметр <путь> является константой или переменной, которой присвоен корректный путь доступа, то заданный с его помощью каталог становится текущим. Если же переменная <путь> не означена, то данный предикат присваивает ей путь доступа к текущей директории.

dir(<путь>,<шаблон>,<имя_файла>) - выдача списка файлов каталога. Переменной <путь> должен быть присвоен корректный путь доступа, текстовая переменная <шаблон> задает шаблон группы файлов, представляющей интерес. Данный предикат выдает каталог имен файлов подходящих под заданный шаблон; вы можете выбрать среди них нужный и нажать Enter. Имя файла будет присвоено переменной <имя_файла>.

Так, в приведенном выше примере программы работы с БД в оперативной памяти правило reaction(6) сохранения БД в файле на диске можно заменить (добавив соответствующие описания) следующей группой правил.

reaction('6'):-savedb,nl,menu.

.:- write("Введите имя файла"), readln(Fname), rwrite(Fname).(""):- disk(Dir),dir(Dir,"*.dba",Fname1),save(Fname1).(Fname):- existfile(Fname), write("Файл с таким именем уже существует. Перезаписать (y/n)?"), nl, readchar(Yes), rwr(Yes, Fname).(Fname):- not(existfile(Fname)), save(Fname).('y',Fname):-save(Fname).('n',_):- write("Enter new filename"), readln(Fname1),(Fname1).('Y',Fname):-rwr('y',Fname).('N',Fname):-rwr('n',Fname).

Здесь правило rwrite предназначено для определения имени файла, и сохранения в нем данных из базы. При этом если введено имя уже существующего файла, будет выдан запрос о перезаписи с уничтожением прежней информации (предикат rwr), а если имя файла введено не было, программа предоставит возможность выбора имени из списка (предикат dir).

Кроме того, перед созданием новой БД было бы неплохо вывести запрос о сохранении уже имеющихся результатов. Для чего reaction(1) заменяем следующей правил.

reaction('1'):- write("Сохранить изменения (y/n)?"),

readchar(Yes), nl, savequation1(Yes), nl, deldb,.('n').('N').('y'):-savequation1('Y').('Y'):-savedb.(_):-write("Нажмите, пожалуйста, y или n"),(Yes), nl, savequation1(Yes).

Здесь предикат savequation1 задает реакцию на ответ пользователя на запрос о сохранении имеющихся данных. Очевидно, что такой запрос можно включить и в правило reaction(2) перед загрузкой новой БД и в правило reaction(7) перед окончанием работы программы.

reaction('2'):- disk(Dir),dir(Dir,"*.dba",Fname),, write("Сохранить изменения (y/n)?"),

readchar(Yes),nl, savequation1(Yes), nl,(Fname), menu.('7'):- write("Сохранить изменения (y/n)?"),(Yes), nl, savequation1(Yes),nl.

Помимо перечисленных предикатов Турбо-Пролог также поддерживает предикаты чтения информации из файла, записи в файл, модификации файла и тому подобные. Однако для того чтобы использовать в программе такие предикаты, необходимо ее снабдить описанием файлового домена.

Описание файлового домена

 

Описание одного файлового домена с именем datafile выглядит как= datafile

Это описание отличается от привычного описания типа= symbol,

где name является именем домена, а symbol - стандартным типом доменов Турбо-Пролога.

. При описании файловых доменов, стандартный тип домена file задается по левую сторону от знака равенства, а имя домена datafile - по правую.

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

В описании file можно указывать несколько символических имен, но само описание должно быть единственным. Если в программе вводится несколько символических имен файлов, то они разделяются между собой точкой с запятой (;). Например,

file = datafile1; datafile2; datafile3

Это объявление декларирует три символических имени для последующего их отождествления с реальными DOS файлами.



Поделиться:


Последнее изменение этой страницы: 2020-03-14; просмотров: 95; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 52.14.253.170 (0.005 с.)