Lisp IO 総まとめ-20100205
Lisp IO 基本総まとめ - Shammerismの内容に一部追加。
File 読み込み
(with-open-file (input-stream "$READ_FILE_NAME" :direction :input) (loop (let ((line (read-line input-stream nil 'eof))) (if (eql line 'eof) (return)) (format t "~A~%" line)))))
(with-open-file (stream path :direction :input) (do ((line ;Value Name (read-line stream nil 'eof) ;Initial Value (read-line stream nil 'eof))) ;Step ((eql line 'eof)) ; Finish Judgement (format t "~A~%" line)))
File 書き出し
(with-open-file (output-stream "$OUTPUT_FILE_NAME" :direction :output) (format output-stream "Hello!"))
File 書き足し
(with-open-file (stream path :direction :output :if-exists :append :if-does-not-exist :error) (format stream "~A~%" "Hello, World!") (format stream "~A~%" "END OF FILE"))
Passive Socket
(defun open-echo-server () (with-open-socket (server :type :stream :connect :passive :local-host "localhost" :local-port 8080 :reuse-address t) (let ((client (accept-connection server))) (format t "> Server received a message: ~%") (do ((line (read-line client nil nil) (read-line client nil nil))) ((or (string-equal line (string '#\Return)) (eql line nil))) (dolist (i (coerce line 'list)) (format t "~:c" i)) (format t "~%")) (format t "> Received Complete...~%") (close client))))
Active Socket
(defun send-message (destination-host destination-port message) (with-open-socket (client :address-family :internet :type :stream :connect :active :remote-host destination-host :remote-port destination-port) (format client message) (format client "~%") (force-output client)))