Openwrite(SymbolFileName, DOSFileName).
Например: openwrite(myfile1, «file1.dat»). Т.е. устанавливается связь между объектами myfile1 и file1.dat, а ссылка на myfile1 означает обращение к file1.dat.
Если файл file1.dat уже существует, то его содержимое будет утеряно. Для избежания этого сначала проверяется наличие этого файла existfile(«file1.dat»).
Назначение файла myfile1 в качестве устройства записи реализует предикат Writedevice(myfile1).
Собственно запись в файл реализуется любыми предикатами write или writef. При этом ввод будет происходить не на экран, а в файл. И, наконец, закрытие файла myfile1 реализует предикат closefile(myfile1).
Т.о. вся процедура записи в файл складывается из следующих этапов: открытие файла, назначение файла в качестве устройства записи, сама запись и закрытие его. Например: openwrite(myfile1, «file1.dat»), Writedevice(myfile1), <предикаты и правила записи в файл>, <любые другие предикаты и правила>, Closefile(myfile1).
ЧТЕНИЕ ИЗ ФАЙЛА Если файл уже создан, то он готов для осуществления некоторых операций: считывание всех данных или выборочно, модификация данных, добавление данных в конец файла.
Уже созданный файл DOSFileName открывается для чтения по логическому имени SymbolFileName: Openread(SymbolFileName, DOSFileName). Например: openread(myfile1, «file1.dat»).
Предикат Readdevice(SymbolFileName) назначает файл DOSFileName устройством чтения.
Предикат closefile(SymbolicFileName) закрывает файл. Например: openread(myfile1, «file1.dat»). Writedevice(myfile1). <предикаты и правила записи в файл>, <любые другие предикаты и правила>, Closefile(myfile1).
МОДИФИКАЦИЯ СУЩЕСТВУЮЩЕГО ФАЙЛА Эта операция несколько отличается от предыдущих. Сначала существующий файл открывается для модификации (чтения и записи) с помощью следующего предиката: openmodify(SymbolFileName, DOSFileName).
Нужно учитывать, что позиция символа в файле определяется его удаленностью от самого первого символа: в нулевой позиции - 1-й символ, в первой - 2-й символ и т.д. При открытии или модификации файла указатель находится в начале. Но указатель символа можно устанавливать и в любую позицию файла при использовании предиката filepos.
Вся процедура модификации файла складывается из следующих этапов: открытие, назначение файла в качестве устройства записи, запись в файл и закрытие его. Например: openmodify(myfile1, «file1.dat»), Writedevice(myfile1), <правила выборочной записи в файл>, <любые другие предикаты и правила>, Closefile(myfile1).
ДОЗАПИСЬ В КОНЕЦ СУЩЕСТВУЮЩЕГО ФАЙЛА Для реализации этой операции используется openappend(SymbolFileName, DOSFileName).
Вся процедура дозаписи очевидна из описаний предыдущих операций. Например: openappend(myfile1, «file1.dat»), Writedevice(myfile1), <правила дозаписи>, <любые другие предикаты и правила>, Closefile(myfile1).
В примере 6.1 демонстрируется вывод информации из статической БД в файл на диске и на экран монитора.
/*Пример 6.1.*/ Domains file=myfile Predicates Data(symbol) Write_lines Goal openwrite(myfile, «PETER.DAT»), Write_lines, Closefile(myfile). Clauses data(«Люблю тебя, Петра творенье,»). data(«Люблю твой строгий, стройный вид,»). data(«Невы державное теченье,»). data(«Береговой ее гранит.»). write_lines:- data(«Line»), write(«»,Line),nl, Writedevice(myfile), write(«»,Line),nl, Writedevice(screen), Fail. Write_line.
В примере 6.2 демонстрируется чтение данных из файла PETER.DAT и вывод прочитанной информации на экран и принтер.
/*Пример 6.2.*/ Domains file=myfile1 Predicates Write_data Goal openread(myfile1, «PETER.DAT»), Write_data, Closefile(myfile1). Clauses write_data:- Readdevice(myfile1), Not(eof(myfile1)), Readln(Line), Writedevice(screen), write(«»,Line), Readln(Line), Writedevice(printer), write(«»,Line), Write_data. Fail.
|