【发布时间】:2018-05-28 17:12:16
【问题描述】:
1)我有一个文件,其内容通过矢量类型容器进行镜像。
2) 每 5 秒左右检查一次文件内容(是否有更改)。
3) 对文件所做的任何更改都会导致向量被更新,从而保持镜像。
4)矢量的内容实时显示在屏幕上。
这个问题一定会出现很多,但是我没有找到满意的答案。这可能是答案恰好不令人满意,两者并不相互排斥,但让我们看看......
可能的解决方案:
仅使用基本的 C++ 和 STL。
1) 文件数据长度或上次读取位置。
每次读取后,存储上次读取位置。 任何新的读取都从上次读取位置开始。
缺点:
对现有文件数据的任何更改都不会被发现。
2) 哈希检查。
每次读取后,存储每个文件行的哈希值,以后可以用来检查/读取新的文件数据。
专业版:
对文件内容的任何更改都会反映在向量中。
缺点:
每个文件行都被读取、散列和存储......两次!
随着文件大小的增加而产生的开销。
3) 没有检查。
不检查任何内容,每次只读取整个文件并覆盖向量,无论文件内容如何更改。
专业版:
对文件内容的任何更改都会反映在向量中。
缺点:
?
【问题讨论】:
-
“仍然需要读取整个文件数据以确定当前文件数据长度”不,只需寻找最后一个读取位置并从那里开始读取以附加到向量。