你如何在 clojure 中持续监控文件的内容?

How do you constantly monitor the contents of a file in clojure?

我有一个 incanter 数据集,我想在每次其他进程更改源 csv 文件时重新加载它。换句话说,mydata_ incanter 数据集在我每次查看时都应该是最新的。我如何在惯用的 clojure 中实现它?

(use 'incanter.io)
(def mydata_ (read-csv "./changingfile.csv"))

在某些时候,另一个进程发生变化 changingfile.csv,如何确保 mydata_ 自动更新?这与仅向 clojure 中的现有数据结构添加监视函数有点不同。

谢谢。

观看文件系统的好库:https://github.com/derekchiang/Clojure-Watch 可用于观察 csv 并可将 mydata_ 设置为原子,或者任何使用 mydata 的东西都可以从 clojure-watches 回调中启动。