2 votes

Voici la manière la plus simple de copier un fichier d'un répertoire à un autre en Common Lisp.

Déplacer un fichier semble facile, mais existe-t-il un moyen simple de copier un fichier dans un chemin donné vers un autre?

4voto

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.

2voto

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))))))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X