2016-01-29 106 views
2

我使用文本文件作爲數據庫來保存我使用swi-prolog製作的遊戲的用戶信息。信息保存如下:user(Name,Password,Age,Points).我想要做的是更改用戶的Points而不必重寫整個數據庫。換句話說,我正在尋找一些可以像retractall(user(Name,_,_,_))那樣工作的東西,但是可以使用文本文件。我知道如何使用read/2來查找特定用戶,以及如何使用write/2來確定新的事實,但是我不知道如何刪除文本文件中的一個特定行。 謝謝你的幫助。使用swi-prolog更改和刪除文本文件中的行

回答

1

看看SWI-Prolog的庫(持久性)。它刪除了一個事實,即添加一條刪除該事實的行。如果文件在添加/刪除行中變得太大,它會提供db_sync/1來寫入乾淨的文件。 OS文件系統操作不允許刪除部分文件(除了截斷結尾)。執行此操作的正常方法是編寫一個新文件,如果成功,將其重命名爲現有文件,如果在寫入新文件時崩潰,則不會丟失任何內容。