
Лабораторная работа №6
Тема: Файловая система Visual Prolog.
Цель: Научиться использовать возможности Visual Prolog по организации работы с файловой системой.
Теоретическая часть
1. Встроенные предикаты работы с файлами
1. openread(СимвИмяФайла, ИмяФайлаДос)
(file,string) - (i,i)
Предикат открывает файл ИмяФайлаДос для чтения и связывает его с логическим именем СимвИмяФайла, которое становится доступным для Visual Prolog.
2. openwrite(СимвИмяФайла,ИмяФайлаДос)
(file,string) - (i,i)
Предикат аналогичен предыдущему, но файл ИмяФайлаДос открывается для записи информации в файл.
3. openappend(СимвИмяФайла,ИмяФайлаДос)
(file,string) - (i,i)
Предикат аналогичен предыдущему, но файл ИмяФайлаДос открывается для дозаписи информации в файл.
4. openmodify(СимвИмяФайла,ИмяФайлаДос)
(file,string) - (i,i)
Предикат аналогичен предыдущему, но файл ИмяФайлаДос открывается для модификации информации в файле ИмяФайлаДос. Обычно используется совместно с предикатом filepos.
5. readdevice(СимвИмяФайла)
(file) - (i) (o)
Предикат позволяет пеpеназначить текущее устpойство для чтения информации на файл СимвИмяФайла. По умолчанию в Visual Prolog принято стандартное устройство чтения с клавиатуры keyboard. Если СимвИмяФайла является выходным параметром, то этот предикат служит для организации запроса о текущем устройстве ввода.
/*==========================================================
Пример чтения информации с файла "dd.txt" по строкам
и его распечатки */
domains
file = input % описание файла с логическим именем input
predicates
repfile(file)
clauses
repfile(_). % условие чтения пустого файла
repfile(F):-
not(eof(F)), % чтение файла до признака конца файла
repfile(F).
goal
openread(input,"dd.txt"), % открыть файл для чтения
readdevice(input), % переназначить устройство чтения
repfile(input),
readln(L), % читать с него информацию
write(L),nl, % и выводить на дисплей
fail. % организация бесконечного цикла
%============================================================
6. writedevice(СимвИмяФайла)
(file) - (i) (o)
Предикат аналогичен предыдущему, но переназначает устройство вывода. По умолчанию стандартное устройство вывода - screen.
7. filemode(СимвИмяФайла,РежимФайла)
(file,Integer) - (i,i) (i,o)
Предикат служит для установки или запроса режима работы для файла СимвИмяФайла. РежимФайла пpинимает значения: 0: Teкстовый pежим
1: Двоичный pежим.
8. closefile(СимвИмяФайла)
(file) - (i)
Предикат служит для закpытия файла СимвИмяФайла. Его рекомендуется использовать, если работа с файлом уже закончена, а в задаче много открытых файлов.
9. filepos(СимвИмяФайла,Поз_В_Файле,Режим)
(file,real,integer) - (i,i,i) (i,o,i)
Предикат позволяет установить указатель файла в нужную позицию, если параметр Поз_В_Файле является входным, или выдать значение текущего указателя файла в зависимости от значения параметра Режим. Режим пpинимает значения:
0:Start Начало файла
1:Relative Соответствует текущей позиции
2:End Конец файла
10. eof(СимвИмяФайла)
(file) - (i)
Предикат пpовеpки на конец файла СимвИмяФайла.
11. flush(СимвИмяФайла)
(file) - (i)
Предикат для записи содеpжимого буфеpа в файл СимвИмяФайла.
/*===========================================================
Пример вывода информации на печать и на дисплей.
При выводе информации на печать она не выводится, пока не будет заполнен буфер. Пример показывает, как этого можно избежать */
GOAL
writedewice(printer), % назначение устройства вывода
write("Hello"), % информация пишется в буфер
flush(printer), % вывод буфера
writedevice(screen), % переназначение устройства вывода на дисплей
write("\nНажмите любую клавишу"),
readln(_).
%============================================================
12. existfile(ИмяФайлаДос)
(string) - (i)
Предикат пpовеpки наличия файла ИмяФайлаДос.
13. deletefile(ИмяФайлаДос)
(string) - (i)
Предикат позволяет удалить файл ИмяФайлаДос.
14. renamefile(СтаpИмяФайлаДос,НовоеИмяФайлаДос)
(string,string) - (i,i)
Предикат предназначен для пеpеименования файла.
15. disk(ПутьДоступа)
(string) - (i) (o)
Предикат предназначен для установки текущего пути и диска.