LISP: Como ler o conteúdo de um arquivo e escrevê-lo em outro arquivo?
Eu quero escrever uma função que tem como argumentos os nomes dos dois arquivos e copia o conteúdo do primeiro arquivo para o segundo.
Até agora eu escrevi uma função que lê de um arquivo:
(defun readFile (name)
(let ((in (open name)))
(format t "~a~%" (read-line in))
(close in)))
E uma função que grava uma string em um arquivo:
(defun writeFile (name content)
(with-open-file (stream name
:direction :output
:if-exists :overwrite
:if-does-not-exist :create)
(format stream content)))
Seguindo as instruções de Savantes eu escrevi a função novamente e é assim que parece:
(defun read-write-to-file (input-file output-file)
(WITH-OPEN-FILE (output-stream output-file
:direction :output
:if-exists :new-version
:if-does-not-exist :create)
(WITH-OPEN-FILE (input-stream input-file
:direction :input)
(FORMAT output-stream "~a" (READ input-stream nil 'eof))
)))
Agora o único problema é que ele não lê o arquivo inteiro.