2012-01-26 75 views
1

我有一个项目,我正在努力在哪里需要验证本地和远程位置计算机中的文件。我尝试了几件事。首先我试着检查两个文件的CreationTimeUTC。我发现创建时间存储文件在相关文件系统上创建的时间,而不是文件第一次创建的时间。只要文件名称匹配并且是最新版本即可。我不“真的”想读取整个内容并获取MD5散列或其他形式的标识符,因为读取文件可能是不可能的。 (获取由另一个程序打开的文件的信息,例如将使这种方法不可能)文件源创建时间

所以基本上我问什么; 文件头中是否存有表示文件创建时间或类似内容的内容?或者,如果任何人都可以推荐使用另一个设置或方法。

在此先感谢。

回答

1

当每个文件从本地计算机复制到远程计算机,使用File.GetCreationTime指定文件的创建时间为string,并且远程机器的副本然后设置创建时间与File.SetCreationTime所以它的创建时间相匹配原始文件。

0

文件创建时间将始终取决于它创建的机器。简单的解决方案是将文件存储在您控制的计算机上,并保持时间同步。

在我的头顶,我能想到的两种方法来解决你的问题:

  • 获取远程和本地系统日期时间和比较文件时候使用两者之间的 差异。

  • 如果文件从不删除,则可以通过计算文件创建与其最后一次修改之间的时间间隔来检查文件的“生存期” 。

但是,这两种策略都可以通过手动更改系统日期时间来绕过。

0

您是否尝试过使用File.GetLastWriteTime?至少在将笔记本电脑上的文件复制到文件服务器时,LastWriteTime保持不变。

(看起来好像有一个已知的conversion bug会导致时间和日期信息在从NTFS复制到FAT时有时会出错,反之亦然)。