C目录监视 – 如何检测副本已结束

C目录监视 – 如何检测副本已结束,第1张

概述我有一个复制文件的文件夹.我想在将文件复制到目录后立即查看并处理文件.我可以检测文件何时在目录中,是通过轮询(我当前的实现)还是在某些测试中使用 Windows API从我在网上找到的一些样本中检测到的. 问题是我检测到文件首次创建时仍然被复制.这使我的程序需要通过错误访问该文件(因为该文件尚未完成).如何在复制开始时复制到复制结束时如何检测?我在Windows上使用C,所以答案可能取决于平台,但 我有一个复制文件的文件夹.我想在将文件复制到目录后立即查看并处理文件.我可以检测文件何时在目录中,是通过轮询(我当前的实现)还是在某些测试中使用 Windows API从我在网上找到的一些样本中检测到的.

问题是我检测到文件首次创建时仍然被复制.这使我的程序需要通过错误访问该文件(因为该文件尚未完成).如何在复制开始时复制到复制结束时如何检测?我在windows上使用C,所以答案可能取决于平台,但如果可能的话,我更喜欢它与平台无关.

解决方法 您可以使用锁定文件或特殊命名约定.最简单的是后者,它会像这样工作:

假设您要移动名为“fileA.txt”的文件,将其复制到目标目录时,请将其复制到“fileA.txt.partial”或类似名称.复制完成后,将文件从“fileA.txt.partial”重命名为“fileA.txt”.因此,就观看节目而言,“fileA.txt”的外观是原子的.

前面提到的另一个选项是锁定文件.因此,当您复制名为“fileA.txt”的文件时,首先要创建一个名为“fileA.txt.lock”的文件.复制完成后,您只需删除锁定文件.当观看节目看到“fileA.txt”时,它应该检查“fileA.txt.lock”是否存在,如果存在,它可以根据需要等待或重新访问该文件.

总结

以上是内存溢出为你收集整理的C目录监视 – 如何检测副本已结束全部内容,希望文章能够帮你解决C目录监视 – 如何检测副本已结束所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1241902.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-06
下一篇2022-06-06

发表评论

登录后才能评论

评论列表(0条)

    保存