common-lisp 读取文件
示例
可以使用WITH-OPEN-FILE宏打开文件以作为流读取。
(with-open-file (file #P"test.file")
(loop for i from 0
for line = (read-line file nil nil)
while line
do (format t "~d: ~a~%" i line)))
; 0: Foobar
; 1: Barfoo
; 2: Quuxbar
; 3: Barquux
; 4: Quuxfoo
; 5: Fooquux
;=> T可以使用OPEN和手动进行相同操作CLOSE。
(let ((file (open #P"test.file"))
(aborted t))
(unwind-protect
(progn
(loop for i from 0
for line = (read-line file nil nil)
while line
do (format t "~d: ~a~%" i line))
(setf aborted nil))
(close file :abort aborted)))请注意,READ-LINE为每行创建一个新字符串。这可能很慢。一些实现提供了一种变体,可以将一行读入字符串缓冲区。示例:READ-LINE-INTO用于AllegroCL。