如果我使用
编写文件(with-open-file (s "~/example.sexp" :direction :output)
(write '(1 2 3) :stream s)
(write '(4 5 6) :stream s)
(write '(7 8 9) :stream s))
创建包含
的文件(1 2 3)(4 5 6)(7 8 9)
但是当我尝试使用
打开并阅读它时(setf f (open "~/example.sexp"))
(read :input-stream f)
我得到一个“:INPUT-STREAM不是STREAM类型”错误。
(type-of f)
返回STREAM :: LATIN-1-FILE-STREAM,看起来它至少是 close 到我需要的东西。有什么区别?
如何阅读我写入文件的列表?
答案 0 :(得分:5)
你得到了READ
错误的论据。它应该只是(read f)
,而不是(read :input-stream f)
。
答案 1 :(得分:4)
您也可以使用with-open-file:
(with-open-file (s "~/example.sexp")
(read s))
甚至:
(with-open-file (*standard-input* "~/example.sexp")
(read))
:输入是默认方向。