Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.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
File io 在Clojure中跟踪文件?_File Io_Clojure - Fatal编程技术网

File io 在Clojure中跟踪文件?

File io 在Clojure中跟踪文件?,file-io,clojure,File Io,Clojure,在Clojure中跟踪文件的最佳方法是什么?我还没有遇到任何实用程序,可以帮助这样做,但如何建立一个想法将不胜感激 谢谢。类似于: (take-last 10 (line-seq (clojure.contrib.io/reader "file"))) 您可以使用RandomAccessFile直接搜索文件的末尾,并从那里搜索换行符。不像take last方法那样优雅和简短,但也不像O(n)那样,这可能对大文件大小很重要 不过,对于tail-f,没有解决方案。可以从中找到一些灵感。正如kota

在Clojure中跟踪文件的最佳方法是什么?我还没有遇到任何实用程序,可以帮助这样做,但如何建立一个想法将不胜感激

谢谢。

类似于:

(take-last 10 (line-seq (clojure.contrib.io/reader "file")))

您可以使用
RandomAccessFile
直接搜索文件的末尾,并从那里搜索换行符。不像
take last
方法那样优雅和简短,但也不像
O(n)
那样,这可能对大文件大小很重要

不过,对于
tail-f
,没有解决方案。可以从中找到一些灵感。

正如kotarak所说,您可以使用随机访问文件来查找文件的结尾。不幸的是,您必须忙于等待/睡眠以进行更改

使用惰性序列,您可以“动态”处理行:

更新:

类似于tail-f/var/log/mail.log-n0的东西,使用doseq,因此实际使用了更改

(doseq [line (tail-seq "/var/log/mail.log")] (println line))

谢谢你的指点!由于某些原因,这似乎没有达到预期效果-文件更改似乎没有被检测到!(程序在第一次文件更改后停止)请检查我的更新:也可能写入文件没有“行缓冲”?
(doseq [line (tail-seq "/var/log/mail.log")] (println line))