最有效的方式(每5秒)更新/维护一个文件/矢量镜像?

时间:2018-05-28 17:12:16

标签: c++ file stl

1)我有一个文件,其内容通过矢量类型容器进行镜像。

2)每隔5秒左右检查一次文件内容(更改)。

3)对文件所做的任何更改都会导致向量更新,从而维护镜像。

4)矢量内容实时显示在屏幕上。

这个问题必定会出现,但我没有找到满意的答案。可能答案恰好是不满意的,两者并不相互排斥,但让我们看看......

可能的解决方案:

仅使用基本C ++和STL。

1)文件数据长度或上次读取位置。

每次读取后,存储最后读取位置。 任何新读取都从上次读取位置开始。

缺点:

对现有文件数据的任何更改都将保持不被发现。

2)哈希检查。

每次读取后,存储每个文件行的哈希值,稍后可用于检查/读取新文件数据。

临:

对文件内容的任何更改都会反映在向量中。

缺点:

每个文件行都有读取,散列和存储....两次!

文件增长时的开销。

3)没有检查。

不管文件内容如何变化,都不要检查任何内容,只需读取整个文件并每次覆盖矢量。

临:

对文件内容的任何更改都将反映在矢量中。

缺点:

1 个答案:

答案 0 :(得分:0)

如果您在Windows上,只需让操作系统通知您受监控文件夹中的更改。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa365261(v=vs.85).aspx

这样您就不需要轮询并获取有关文件属性更改的信息(例如,上次写入)

一旦您知道实际发生的变化,您就可以阅读/更新。

不确定它是如何为其他操作系统完成的。