Clisp错误:PRINC:参数不是流

时间:2016-07-18 15:40:56

标签: lisp common-lisp clisp

我正在尝试写入Common Lisp中的文件,但我不断收到“文件不是流”错误:

[1]> (open "file.txt" :direction :output :if-does-not-exist :create :if-exists :supersede)
#<output buffered file-stream character #P"file.txt">
[2]> (princ 'Hello "file.txt")

*** - princ: argument "file.txt" is not a stream

即使尝试关闭文件也会返回错误:

[4]> (close "file.txt")

*** - no-applicable-method: When calling #<standard-generic-function close>
with arguments ("file.txt"), no method is applicable.

文件已正确创建,因此我认为它可能是权限问题,但似乎并非如此。 到目前为止,我已经用Google搜索了这个错误。有谁知道我做错了什么?谢谢。

PS:我正在使用CLISP 2.49(2010-07-07)运行Linux Mint 17.3 Rosa

1 个答案:

答案 0 :(得分:6)

要使用打开的文件,您必须保存open的返回值,并将其用作princ的第二个参数。您还必须使用相同的返回值作为close的参数。

通常使用便捷宏with-open-file来完成。

files chapter of Practical Common Lisp显示了如何使用这些以及其他功能和宏。