Comment créer une liste de tous les fichiers d'un répertoire spécifique dans Clojure? Dois-je recourir à Java ou Clojure peut-il gérer cela de manière native?
Réponses
Trop de publicités?Clojure a été conçu pour épouser la plate-forme Java, et c'est un domaine où Clojure ne fournit pas de sa propre API. Cela signifie que vous avez probablement à plonger dans Java, mais les classes que vous avez à travailler avec sont parfaitement utilisables directement à partir de Clojure.
La seule classe que vous devriez lire à propos de la documentation javadoc est - java.io.File
, ce qui représente un chemin d'accès au fichier.
http://docs.oracle.com/javase/6/docs/api/java/io/File.html
L' .listFiles
exemple de la méthode retourne un tableau (que vous pouvez utiliser en tant que seq) de l' File
objets: un pour chaque entrée du répertoire identifié par l' File
de l'instance. Il y a d'autres méthodes utiles pour déterminer si une File
existe, c'est un répertoire, et ainsi de suite.
Exemple
(ns my-file-utils
(:import java.io.File))
(defn my-ls [d]
(println "Files in " (.getName d))
(doseq [f (.listFiles d)]
(if (.isDirectory f)
(print "d ")
(print "- "))
(println (.getName f))))
;; Usage: (my-ls (File. "."))
La Construction Des Objets De Fichiers
Le constructeur de File
peut parfois être un peu difficiles à utiliser (surtout lors de la fusion de plusieurs segments de tracé d'un seul coup) et dans ce cas, Clojure fournit une aide utile fonction: clojure.java.io/file
. Comme ses arguments, il accepte les segments du chemin comme des chaînes de caractères ou des fichiers. Les segments sont reliés avec le bon séparateur de chemin d'accès de la plate-forme.
http://clojuredocs.org/clojure_core/clojure.java.io/file
Remarque: Clojure fournit également l' file-seq
fonction qui retourne une précommande à pied (en tant que seq) si la hiérarchie des fichiers de départ à la donnée de fichier.
Découvrez également les fs de la bibliothèque.
Il peut ne pas être la peine de tirer dans le supplément de dépendance si vous avez besoin d'une liste de fichiers dans un répertoire, mais il y a beaucoup de fonctions utilitaires-il, par exemple pour:
- La création d'une structure de répertoire
- La copie, la suppression, le déplacement
- La vérification et la modification des autorisations
- Le fractionnement et la normalisation des chemins
- Créer des fichiers temporaires et des répertoires
- D'expansion
- Travailler avec zip et tar fichiers