Есть ли библиотека, которая позволяет мне копировать каталог и все подкаталоги в Clojure? Что-то вроде:Как скопировать каталог в Clojure?
(copy "source-dir" "destination-dir")
Есть ли библиотека, которая позволяет мне копировать каталог и все подкаталоги в Clojure? Что-то вроде:Как скопировать каталог в Clojure?
(copy "source-dir" "destination-dir")
Вы можете использовать следующий код для copy-dir
:
копировать-Dir (копия-Dir от)
Копирование каталогов из
from
доto
. Еслиto
уже существует, скопируйте каталог в каталог с тем же именем какfrom
в каталогеto
.
(defn copy-dir
"Copy a directory from `from` to `to`. If `to` already exists, copy the directory
to a directory with the same name as `from` within the `to` directory."
[from to]
(when (exists? from)
(if (file? to)
(throw (IllegalArgumentException. (str to " is a file")))
(let [from (file from)
to (if (exists? to)
(file to (base-name from))
(file to))
trim-size (-> from str count inc)
dest #(file to (subs (str %) trim-size))]
(mkdirs to)
(dorun
(walk (fn [root dirs files]
(doseq [dir dirs]
(when-not (directory? dir)
(-> root (file dir) dest mkdirs)))
(doseq [f files]
(copy+ (file root f) (dest (file root f)))))
from))
to))))
Или напрямую использовать имеющиеся fs library на Github.
@ Zubair запрашивает библиотеки явно вне темы по http://stackoverflow.com/help/on-topic – developerbmw
@developerbmw Тогда, пожалуйста, проголосуйте, чтобы закрыть это вопрос, то есть ваше право – Zubair
@developerbmw Я подтвердил ваш комментарий, показывающий ссылку переполнения стека. Если бы вы заявили, что в первую очередь я бы понял, поэтому спасибо за это – Zubair
Почему минус голоса? – Zubair
Используйте рекурсию, Люк. Downvote - моя, так как вопрос не показывает никаких усилий, направленных на решение проблемы. Чтобы скопировать каталог, вы рекурсивно скопируете его по файлу. – zerkms
Да, я знаю это, но мне нравится снова использовать код прежде, чем я изобретаю колесо, названное DRY – Zubair