C# 如何找出已重命名的文件?

C# 如何找出已重命名的文件?,c#,file-io,polling,C#,File Io,Polling,如何检测文件是否已重命名 我使用的是轮询方法,而不是系统文件监视程序方法 目前,我可以通过LastWriteTime属性(文件资源管理器中的DateModified)检测System.IO.File对象的更改。但是,重命名文件时,我看不到任何属性,例如日期属性更改日期 如何使用轮询方法检测文件重命名 有趣的是,文件所在的目录在重命名文件时会更改日期。我必须在一个阶段使用一小组文件来执行此操作,在这种情况下,我存储了每个文件的文件路径,并在每次轮询时创建日期和文件大小 然后,在以后的每一次民意调查

如何检测文件是否已重命名

我使用的是轮询方法,而不是系统文件监视程序方法

目前,我可以通过LastWriteTime属性(文件资源管理器中的DateModified)检测System.IO.File对象的更改。但是,重命名文件时,我看不到任何属性,例如日期属性更改日期

如何使用轮询方法检测文件重命名


有趣的是,文件所在的目录在重命名文件时会更改日期。

我必须在一个阶段使用一小组文件来执行此操作,在这种情况下,我存储了每个文件的文件路径,并在每次轮询时创建日期和文件大小

然后,在以后的每一次民意调查中,我都能检测到上次民意调查中“丢失”的文件。然后,我会交叉检查创建的时间和文件大小,以检测一些较新的文件是否与一些丢失的文件匹配。如果我找到了匹配项,我会假设重命名


但请注意,它可能不安全/100%准确;您可能有多个文件具有相同的创建日期和文件大小等。在我的情况下,它是使用生成的照片,我也能够检查exif数据作为最终验证。根据您的情况,您可能还有其他数据需要验证。

为什么不想使用FileSystemWatcher?@astander Valamas可能不是这样,但在我的情况下,我需要监视网络驱动器上的文件;我记不起来了,但要么事件从未发生过,要么行为不一致。FSW因没有100%准确而臭名昭著。许多人在FSW中使用轮询方法。我们将构建整个系统的概念是,如果软件关闭,轮询应该在停止的地方恢复。我们可能会在未来增加FSW。这已经在我们的脑海中闪过。因此,我们现在将着手创建一个隐藏的索引文件,并将MD5哈希添加到该文件中以用作引用。