FileInfo.LastWriteTime可能会产生误导。还有其他方法吗?

时间:2010-10-26 21:02:38

标签: .net

我使用FileInfo.LastWriteTime来确定何时是某个文件的确切时间,例如“c:\ temp \ test_file.txt”已更改。

当有人实际打开文件,进行更改然后保存时,它的效果很好 - 此路径的FileInfo.LastWriteTime随着文件更改的时间而更新。

但是在以下情况中会发生什么:

从光盘上的其他位置复制具有相同名称但内容不同的文件,并将其粘贴到“c:\ temp \”文件夹(覆盖现有文件) - 文件“c:\ temp \ test_file”。 txt“实际上已更改(由具有相同名称但内容不同的文件覆盖),文件的”LastWriteTime“”c:\ temp \ test_file.txt“不是它的时间被覆盖了,但它实际上是我们复制的文件的“LastWriteTime”,可能比它被覆盖的时刻要早得多。

如果我需要知道文件被覆盖的时刻,还有其他方法,请不要建议注册FileChange事件等解决方案 - 我正在搜索解决方案,我不必像程序一样让程序一直运行 - 我的应用程序可能不会一直执行,我需要知道文件何时被覆盖,即使这个时刻是我的应用程序关闭的时候

2 个答案:

答案 0 :(得分:1)

在您在问题中描述的情况下,您可以使用文件创建时间,因为复制文件时会发生这种情况。

我建议您需要检查上次写入时间和文件创建时间,以确定大多数更改。

否则你可以查看文件大小,如果这还不够,那么你需要在文件内容上生成一个哈希值。

修改

如果您使用的是FileInfo对象,则需要调用Refresh方法来更新任何上次写入时间,创建时间,文件存在等属性。

答案 1 :(得分:0)

为此你需要使用 FileInfo .CreationTime()&以及用于检查的 FileInfo .LastWriteTime()方法组合。