Déplacer un fichier semble facile, mais existe-t-il un moyen simple de copier un fichier dans un chemin donné vers un autre?
Réponses
Trop de publicités?
villasv
Points
1915
Le uiop
package a une telle fonction:
(uiop:copy-file source-path target-path)
Il fait partie de ASDF, donc il pourrait être immédiatement disponible sur certaines implémentations de Common Lisp.
Utilisateur non enregistré
Points
0
Alors que la réponse saine est d'utiliser les choses que ASDF expédie, vous pouvez écrire ceci. Attention, le code ci-dessous n'a pas été très soigneusement testé (mais je l'utilise pour copier des binaires) :
(defun copy-file (from to)
;; Je suis sûr qu'il existe des packages de portabilité pour faire cela, mais je ne veux pas compter sur eux. Ceci est une mise en œuvre naïve qui n'est pas terrible.
(with-open-file (out to :direction ':output
:if-exists ':supersede
:element-type '(unsigned-byte 8))
(with-open-file (in from :direction ':input
:element-type '(unsigned-byte 8))
(loop with buffer = (make-array 4096 :element-type '(unsigned-byte 8))
for pos = (read-sequence buffer in)
while (> pos 0)
do (write-sequence buffer out :end pos)
finally (return (values from to))))))