Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Clojure 轮询文件以进行更改?_Clojure - Fatal编程技术网

Clojure 轮询文件以进行更改?

Clojure 轮询文件以进行更改?,clojure,Clojure,通常,我希望轮询文件以进行更改(上次编写文件时)。当文件确实改变了以前的值时,我希望执行一些函数。某种形式的 (poll-for-changes file-str on-change-fx current-value) 在哪里 file str只是一个指定文件位置的字符串 on change fx是当file str中的文件更改时应调用的函数。假设changefx上的应该将指向File str的File对象作为参数 当前值文件的当前值(以毫秒为单位)。您可以设置为0以保证此函数至少运行一次,或

通常,我希望轮询文件以进行更改(上次编写文件时)。当文件确实改变了以前的值时,我希望执行一些函数。某种形式的

(poll-for-changes file-str on-change-fx current-value)
在哪里

  • file str
    只是一个指定文件位置的字符串
  • on change fx
    是当
    file str
    中的文件更改时应调用的函数。假设changefx上的
    应该将指向
    File str
    的File对象作为参数
  • 当前值
    文件的当前值(以毫秒为单位)。您可以设置为0以保证此函数至少运行一次,或者设置为实际值以仅在实际检测到更改时运行此函数

  • 我只希望这个函数能够以最清晰、最简洁、尽可能简洁的方式实现。谢谢。

    这里您可以使用两种方法:

  • 使用Java互操作和

  • 检查并学习(在本例中是斯图尔特·塞拉)做你想做的事情。注意,它还使用Java互操作


  • 我认为选项1是最好的选择,函数的实现应该是直接的。您可能希望使用
    doto
    ->
    ->
    宏来提高代码的可读性。

    如果您希望轮询一个目录或文件并对其执行操作,我认为这是非常好的选择

    Java7有一个WatchService,它使用文件系统事件来响应更改。在这种情况下,您根本不进行轮询,而是阻止将来的文件事件。我不认为Clojure中有任何项目可以利用它,尽管我花了一些时间来玩弄它来写一篇文章。它的来源是什么


    我甚至不认为我的库是完整的,但它确实使用了Java 7服务,因此您可以在自己的项目中使用它作为灵感。

    现在我可能会先尝试一下

    否则,有许多替代方案(如
    hara
    docs中所述):

    一些代码可以从以下内容中提取:

    您还可以做
    hara
    所做的事情并包装