我想提示用户在对文件进行一些修改时保存文件,但问题是我不能为我的生活做到这一点。
有些人建议使用FileInfo
课程,但它只会为您提供lastWriteTime
,LastAccessTime
和CreationTime
。
我想使用FileInfo
类而不是FileSystemWatcher
检查修改但是如何检查?
示例:假设用户在我的程序中编辑了一个文件,他们已加载并单击EXIT,我想要一种方法来检查是否对文件进行了任何修改。如果没有,退出。如果有的话,提示用户保存文件。那么我如何检查该文件的修改?
答案 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()进行比较,以查看此后文件是否已保存。如果文件被外部源修改,您可以为用户提供放弃更改并重新加载文件的选项,或将更改保存到新文件。