database - 使用 swi-prolog 更改和删除文本文件中的行

标签 database prolog text-files

我使用文本文件作为数据库来保存我使用 swi-prolog 制作的游戏的用户信息。信息是这样保存的:user(Name,Password,Age,Points). 我想做的是更改用户的 Points 而不必重写整个数据库.换句话说,我正在寻找可以像 retractall(user(Name,_,_,_)) 一样工作的东西,但使用的是文本文件。我知道如何使用 read/2 找到特定用户,以及如何使用 write/2 断言一个新事实,但我不知道如何删除文本文件中的特定行。 感谢您的帮助。

最佳答案

看看 SWI-Prolog 的库(持久性)。它通过添加事实已删除的行来删除事实。如果文件因添加/删除行而变得太大,它会提供 db_sync/1 来写入一个干净的文件。操作系统文件系统操作不允许删除文件的一部分(截断结尾除外)。执行此操作的正常方法是写入一个新文件,如果成功,则将其重命名为现有文件,这样即使在写入新文件时崩溃也不会丢失任何内容。

关于database - 使用 swi-prolog 更改和删除文本文件中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35088686/

相关文章:

mysql - MySQL VARCHAR 可以存储任何字符吗?

php - 从Bootstrap Date中删除填充有从mysql转换为json数组的数据

prolog - 在图中查找路线

python高效替换嵌套数组中的字符串

Java:扫描文件,但从特定行索引开始?

c# - 以数据库为源的Master-Detail View 获取详细元素个数

mysql - 第 2 行存在语法错误 (1064)

list - Prolog 成员/2 谓词

prolog - 试图解决这个难题,但没有找到正确的答案。这是生成的代码

Python 和读取包含字符串和数字列表的文本文件