Пролог как сохранить файл в существующий файл - PullRequest
4 голосов
/ 25 ноября 2011

Как сохранить существующий файл после добавления новых данных

add_a_link(X,Y) :-
    tell('alink.txt'),
    write(X),
    write('.'),
    write(Y),
    write('.'),
    put(10),
    told,
    write('data written'),
    nl.

этот код переписывает только текстовый файл.

1 Ответ

3 голосов
/ 25 ноября 2011

Использование open/3 и потоковый ввод / вывод:

open(file, append, S), write(S, info(X,Y)), put_char(S,.), nl(S), close(S).

Использование tell/1 и told крайне ненадежно. Легко случается, что вывод записывается в другой файл случайно.

Редактировать: Вот пример, иллюстрирующий крайне ненадежные свойства tell/1 и told.

Скажем, вы пишете tell(file), X > 3, write(biggervalue), told. Это прекрасно работает, пока X > 3 Но при меньшем значении этот запрос не выполняется и ничего не пишется. Это могло быть вашим намерением. Тем не менее, следующий вывод где-то еще в вашей программе будет теперь идти в file. Это то, что вы никогда не хотите случиться. По этой причине ISO-Prolog не имеет tell/1 и told, а скорее open/3 и close/1.

...