如何检查文件是否在c#中被修改

时间:2012-03-09 19:45:12

标签: c# visual-studio-2010

我想提示用户在对文件进行一些修改时保存文件,但问题是我不能为我的生活做到这一点。

有些人建议使用FileInfo课程,但它只会为您提供lastWriteTimeLastAccessTimeCreationTime

我想使用FileInfo类而不是FileSystemWatcher检查修改但是如何检查?

示例:假设用户在我的程序中编辑了一个文件,他们已加载并单击EXIT,我想要一种方法来检查是否对文件进行了任何修改。如果没有,退出。如果有的话,提示用户保存文件。那么我如何检查该文件的修改?

2 个答案:

答案 0 :(得分:5)

最简单的方法是计算文件的MD5哈希值并与原始MD5哈希值进行比较,如果这两个哈希值不匹配则修改了文件...

        using (var md5 = new MD5CryptoServiceProvider())
        {
            var buffer = md5.ComputeHash(File.ReadAllBytes(filename));
            var sb = new StringBuilder();
            for (var i = 0; i < buffer.Length; i++)
            {
                sb.Append(buffer[i].ToString("x2"));
            }
            return sb.ToString();
        }

答案 1 :(得分:1)

以下是如何使用File或FileInfo类获取LastWriteTime的一些示例。

http://www.csharp-examples.net/file-creation-modification-time/

我会在加载文件时存储文件的时间戳,然后将其与File.GetLastWriteTime()进行比较,以查看此后文件是否已保存。如果文件被外部源修改,您可以为用户提供放弃更改并重新加载文件的选项,或将更改保存到新文件。