我使用FileInfo.LastWriteTime来知道上一次更改某个文件的确切时间,比方说"c:\temp\test_file.txt“是在什么时候发生的。
当某个人实际打开文件,进行更改,然后保存--这个路径的FileInfo.LastWriteTime将随着文件更改的时间被更新时,它会很好地工作。
但是在以下情况下会发生什么:
复制一个名称相同但内容与磁盘上其他位置不同的文件,并将其粘贴到"c:\temp\“文件夹中(覆盖现有文件)--文件"c:\temp\test_file.txt”实际上已被更改(被同名但内容不同的文件覆盖),但文件"c:\temp\test_file.txt“的LastWriteTime并不是被重写的时间,但实际上是我们复制的文件的"LastWriteTime”,并且可能比它被覆盖的时间早得多。
如果我需要知道文件被覆盖的时间,还有其他方法吗?请不要建议解决方案,比如在FileChange事件上注册--我在寻找一个解决方案,在这个解决方案中,我不需要让程序一直像服务一样运行--我的应用程序可能不会一直被执行,而且我需要知道文件何时被覆盖,即使此时我的应用程序已经关闭。
发布于 2010-10-26 21:08:57
在您在问题中描述的情况下,您可以使用文件创建时间,因为当您复制文件时,这将发生变化。
我建议您需要检查最后的写入时间和文件创建时间,以确定大多数更改。
否则,您可以查看文件大小,如果这还不够,则需要对文件内容生成一个散列。
编辑
如果使用的是FileInfo对象,则需要调用Refresh方法来更新任何最后的写入时间、创建时间、文件存在等属性。
https://stackoverflow.com/questions/4028004
复制相似问题