自上次修改以来如何获取文件的添加内容

时间:2017-03-21 03:34:45

标签: file go indexing

我正在开发一个golang项目,需要索引最近添加的文件内容(使用名为 bleve 的框架),我正在寻找一个解决方案,以获取自上次以来的文件内容修改。我目前的解决方法是记录每个文件的最后一个索引位置,稍后在索引过程中,我只检索从上一个记录位置开始的文件内容。

所以我想知道是否有任何库或内置功能? (不需要限制去,任何语言都可以工作)

如果有人比我的解决方案有更好的想法,我将非常感激!

由于

2 个答案:

答案 0 :(得分:0)

如果你在类Unix系统中运行,你可以使用tail。如果指定跟随该文件,则进程将在到达文件末尾后继续等待。您可以使用os/exec在程序中调用此项,并将Stdout传递给您的程序。然后,您的程序可以定期或通过阻止从中读取。

我能想到在Go中本地执行此操作的唯一方法就像您描述的那样。还有一个库试图模仿Go https://github.com/hpcloud/tail

中的tail

答案 1 :(得分:0)

这取决于文件的更改方式。

如果文件仅附加,那么您只需记录停止索引的最后一个偏移量,然后从那里开始。

如果更改可以在任何地方发生,并且更改主要是用新字节替换旧字节(比如更改图像的像素),那么也许您可以考虑计算小卡盘的校验和,并且仅索引具有不同校验和的那些块

您可以在Go标准库中查看crypto包以获取计算哈希值。

如果更改是对文本文件的行插入/删除(如对源代码的更改),那么diff算法可以帮助您找到差异。类似于https://github.com/octavore/delta