我意识到FileSystemWatcher没有提供移动事件,相反,它将为同一文件生成单独的删除和创建事件。( FilesystemWatcher同时监视源文件夹和目标文件夹)。
然而,我们如何区分真正的文件移动和某个随机创建的文件,该文件恰好与最近删除的文件同名?
FileSystemEventArgs类的某种属性,如"AssociatedDeleteFile“,如果是移动的结果,则分配给删除的文件路径,否则为NULL,这将是很好的。但这当然不存在。
我还了解到FileSystemWatcher是在基本文件系统级别操作的,因此“移动”的概念可能只对更高级别的应用程序有意义。但如果是这种情况,人们会推荐哪种算法来处理我的应用程序中的这种情况?
根据反馈进行更新:
FileSystemWatcher类似乎将移动文件看作是两个不同的事件,一个是删除原始文件,然后是在新位置创建。
不幸的是,在这些事件之间没有提供“链接”,因此如何区分文件移动和正常的删除或创建并不明显。在操作系统级别,一次移动是特殊处理的,你几乎可以瞬间移动一个1 1GB的文件。
有几个答案建议对文件使用散列,以便在事件之间可靠地识别它们,我将明确地采用这种方法。但是,如果有人知道如何更简单地检测移动,请留下答案。
https://stackoverflow.com/questions/1286114
复制相似问题