2010-05-24 51 views
0

早上好另一个文件/晚拷贝文件到在序言

我怎么能写在一个文件的东西,然后将其内容复制到当前文件?

例如我咨询了file1.pro,然后我有规则在file2.pro中写了一些东西,在这个规则完成它的工作之后,我想追加file2.pro int file1.pro的内容。

,当我试图追加到file1.pro直接,数据看起来像未定义的符号,我不知道为什么

请HELLP我

谢谢。

+0

你是如何尝试直接追加到文件中的? – rvirding 2010-05-26 00:58:27

+0

我用 请参阅('file2.pro'),读取(X),类型1(X),看到,最终,reconsult('file1.pro'),reconsult('file2.pro')。 type1(end_of_file)。类型1(X): - open('file1.pro',append,Stream),写入(Stream,X),关闭(Stream)。 final:-open('file1.pro',append,Stream),写入(Stream,。),关闭(Stream)。 – smile 2010-05-28 23:05:43

回答

1

解决方案的细节可能取决于Prolog方言。我在这里使用SWI-Prolog。 SWI-Prolog允许你用open(SrcDest,Mode,Stream)打开一个文件,其中SrcDest是你的文件名,Mode是读/写/附加/更新,而Stream是系统返回的“文件描述符”。该手册阐明了附加和更新之间的区别,如下所示:“Mode append打开文件进行写入,最后放置文件指针。模式更新打开文件进行写入,将文件指针定位在文件的开头而不截断文件。”

要从一个流复制到另一个流,应该使用copy_stream_data(Stream1,Stream2)。

最后,你应该关闭流,否则输出文件将是空的。

将所有内容放在一起给

副本(文件1,文件2): - 打开(文件1,读,流1),开放(文件2,写,流2),copy_stream_data(文件1,文件2),关闭(文件1)关闭(文件2)。

如果您需要重写第二个文件,只需使用update/append模式。