clojure - 构建目录树

标签 clojure

我正在尝试构建一个目录树,例如 xml 树的表示方式,以向量的形式,我可以使用以下代码段很好地遍历文件系统,但我无法解决如何构建树结构的问题这个的?


(defn trav [dir]
  (if (.isDirectory dir)
    (do
      (println (.getName dir))
      (doseq [file (.listFiles dir)]
        (if (.isDirectory file)
          (trav file)))      
      )))

最佳答案

这个怎么样?

(defstruct file :file)
(defstruct dir :file :contents)

(defn file-tree
  [#^File file]
  (if (.isDirectory file)
    (struct dir file (vec (map file-tree (.listFiles file))))
    (struct file file)))

如果您查询 :file 的结果映射,您将获得该节点的文件条目。如果您要求 :contents 并获得 nil ,则它是一个文件。向量表示目录。

正如卡尔已经说过的:也许 file-seq 更合适。

关于clojure - 构建目录树,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1888041/

相关文章:

emacs - 在 Emacs 中使用 `cider-jack-in` 执行 Clojure

string - clojure 删除字符串中模式的最后一个入口

mysql - 克罗贾尔 JDBC : How to Use Pooled Connection for Query

java - 在 Maven 中提前 (AOT) 编译 Clojure 库

clojure - ^{ 是什么意思?

clojure - 为什么 `(count nil)`返回0?

clojure - Clojure 可以完全动态化吗?

ssh - 杰普森 : SSH issue

heroku - 处理托管在 Heroku 上的 Clojure 分类 Web 应用程序的子域

java - 将 java 对象和方法调用转换为 Clojure 代码