小编jpp*_*car的帖子

计算文件夹大小

我正在尝试并行计算文件夹大小.也许这是天真的方法.我所做的是,我将每个分支节点(目录)的计算给予代理.所有叶节点的文件大小都添加到我的大小.好吧它不起作用.:)

'scan'连续工作正常.'pscan'仅打印第一级文件.

(def agents (atom []))
(def my-size (atom 0))
(def root-dir (clojure.java.io/file "/"))

(defn scan [listing]
  (doseq [f listing]
    (if (.isDirectory f)
      (scan (.listFiles f))
      (swap! my-size #(+ % (.length f))))))

(defn pscan [listing]
  (doseq [f listing]
    (if (.isDirectory f)
      (let [a (agent (.listFiles f))]
        (do (swap! agents #(conj % a))
            (send-off a pscan)
            (println (.getName f))))
    (swap! my-size #(+ %  (.length f))))))
Run Code Online (Sandbox Code Playgroud)

你有什么想法,我做错了什么?

谢谢.

clojure agent

4
推荐指数
1
解决办法
1176
查看次数

标签 统计

agent ×1

clojure ×1