1)我有一个文件,其内容通过矢量类型容器进行镜像。
2)每隔5秒左右检查一次文件内容(更改)。
3)对文件所做的任何更改都会导致向量更新,从而维护镜像。
4)矢量内容实时显示在屏幕上。
这个问题必定会出现,但我没有找到满意的答案。可能答案恰好是不满意的,两者并不相互排斥,但让我们看看......
仅使用基本C ++和STL。
1)文件数据长度或上次读取位置。
每次读取后,存储最后读取位置。 任何新读取都从上次读取位置开始。
缺点:
对现有文件数据的任何更改都将保持不被发现。
2)哈希检查。
每次读取后,存储每个文件行的哈希值,稍后可用于检查/读取新文件数据。
临:
对文件内容的任何更改都会反映在向量中。
缺点:
每个文件行都有读取,散列和存储....两次!
文件增长时的开销。
3)没有检查。
不管文件内容如何变化,都不要检查任何内容,只需读取整个文件并每次覆盖矢量。
临:
对文件内容的任何更改都将反映在矢量中。
缺点:
答案 0 :(得分:0)
如果您在Windows上,只需让操作系统通知您受监控文件夹中的更改。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365261(v=vs.85).aspx
这样您就不需要轮询并获取有关文件属性更改的信息(例如,上次写入)
一旦您知道实际发生的变化,您就可以阅读/更新。
不确定它是如何为其他操作系统完成的。