從字串中讀取和寫入整個檔案
以下函式將整個檔案讀入新字串並返回:
(defun read-file (infile)
(with-open-file (instream infile :direction :input :if-does-not-exist nil)
(when instream
(let ((string (make-string (file-length instream))))
(read-sequence string instream)
string))))
如果檔案不存在,結果是 NIL。
以下函式將字串寫入檔案。關鍵字引數用於指定檔案已存在時要執行的操作(預設情況下會導致錯誤,允許的值是 with-open-file 巨集的值)。
(defun write-file (string outfile &key (action-if-exists :error))
(check-type action-if-exists (member nil :error :new-version :rename :rename-and-delete
:overwrite :append :supersede))
(with-open-file (outstream outfile :direction :output :if-exists action-if-exists)
(write-sequence string outstream)))
在這種情況下,write-sequence 可以用 write-string 代替。