问题描述
(defun writetoFile (filename content)
(with-open-file (stream filename :external-format charset:iso-8859-1
:direction :output
;if-exists :add
:if-does-not-exist :create )
(format stream content)
(terpri stream)))
(loop for i from x to y
do (if (= (is_me i) 0)
(format t "i = ~d ~%" i)
(writetoFile "/home/out.txt"
(concatenate 'string (write-to-string i) " is me" )))
do (if (ime i)
(format t "~d IS ME~%" i)
(writetoFile "/home/out.txt"
(concatenate 'string (write-to-string i) " is me" ))))
解决方法
快速解答,您需要使用:if-exists :append
。
Common Lisp HyperSpec关于open的说法如下:
如果存在--:error,:new-version,:rename,:rename-and-delete,:overwrite,:append,:supersede或nil中的一个。如果filespec的版本组件为:newest,则默认值为:new-version,否则为:error。
如果我们看看它对:append
的看法:
:追加
流上的输出操作会破坏性地修改现有文件。文件指针最初位于文件末尾。如果direction为:io,则该文件以双向模式打开,该模式允许进行读取和写入。