1) I有一个文件,其内容通过向量类型容器镜像。
2)每5秒左右检查一次文件内容(是否有更改)。
3)对文件所做的任何更改都会导致向量被更新,从而维护镜像。
4)矢量的内容实时显示在屏幕上。
这个问题一定出现了很多次,但我没有找到令人满意的答案。这可能是一个不满意的答案,两者并不是相互排斥的,但让我们看看……
可能的解决办法:
只使用基本的C++和STL。
1)文件数据长度或最后读取位置.
每次读取后,存储最后读取位置。任何新的读取从最后读取位置开始。
缺点:
对现有文件数据的任何更改都不会被检测到。
2)散列检查.
每次读取后,存储每个文件行的散列,这些散列可稍后用于检查/读取新文件数据。
专业:
对文件内容的任何更改都反映在向量中。
Con:
每个文件行都被读取,散列和stored....twice!
随着文件大小的增加,开销也随之增加。
3)没有检查.
不要检查任何东西,只需每次读取整个文件并覆盖向量,而不管文件内容是否有更改。
专业:
对文件内容的任何更改都将反映在向量中。
Con:
发布于 2018-05-28 17:42:03
如果您在windows上,只需让操作系统在监视文件夹中更改时通知您即可。
https://msdn.microsoft.com/en-us/library/windows/desktop/aa365261(v=vs.85).aspx
这样,您不需要轮询,也不需要获得有关文件属性更改的信息(例如,最后一次写入)。
一旦你知道一个实际的变化发生了,你就可以阅读/更新。
不知道其他操作系统是如何做到的。
https://stackoverflow.com/questions/50570936
复制相似问题