我使用FileInfo.LastWriteTime来确定何时是某个文件的确切时间,例如“c:\ temp \ test_file.txt”已更改。
当有人实际打开文件,进行更改然后保存时,它的效果很好 - 此路径的FileInfo.LastWriteTime随着文件更改的时间而更新。
但是在以下情况中会发生什么:
从光盘上的其他位置复制具有相同名称但内容不同的文件,并将其粘贴到“c:\ temp \”文件夹(覆盖现有文件) - 文件“c:\ temp \ test_file”。 txt“实际上已更改(由具有相同名称但内容不同的文件覆盖),但文件的”LastWriteTime“”c:\ temp \ test_file.txt“不是它的时间被覆盖了,但它实际上是我们复制的文件的“LastWriteTime”,可能比它被覆盖的时刻要早得多。
如果我需要知道文件被覆盖的时刻,还有其他方法,请不要建议注册FileChange事件等解决方案 - 我正在搜索解决方案,我不必像程序一样让程序一直运行 - 我的应用程序可能不会一直执行,我需要知道文件何时被覆盖,即使这个时刻是我的应用程序关闭的时候
答案 0 :(得分:1)
在您在问题中描述的情况下,您可以使用文件创建时间,因为复制文件时会发生这种情况。
我建议您需要检查上次写入时间和文件创建时间,以确定大多数更改。
否则你可以查看文件大小,如果这还不够,那么你需要在文件内容上生成一个哈希值。
修改的
如果您使用的是FileInfo
对象,则需要调用Refresh
方法来更新任何上次写入时间,创建时间,文件存在等属性。
答案 1 :(得分:0)
为此你需要使用 FileInfo .CreationTime()&以及用于检查的 FileInfo .LastWriteTime()方法组合。