我正在制作一个文字处理器。问题是如何检查文件是否保存在C#中?就像用户点击 X 按钮一样,程序会检查文件是否已保存,如果是,则会关闭文件,否则程序会要求用户确认用户是否要关闭文件。
我认为使用MD5哈希可能是一种实用的方式,但这是最好的方法吗?
答案 0 :(得分:2)
您可能希望使用“脏标志”来跟踪文件是否已被修改。它首先设置为false,一旦用户修改内容,该标志就设置为true。保存修改后,标志再次设置为false。这种方法的缺点是你在保存后修改内容,然后再次修改它与保存的版本类似,你不会知道它是一样的。
或者,您可以使用散列函数。这很好,因为它确实比较了内容,但它可能会导致大文件的性能问题(你应该测试它是否有问题)。还有碰撞的可能性,但除非你选择一个非常糟糕的散列函数,否则它们不应成为问题。
当然,当用户修改内容时,也可以组合这两种方法并使用脏标志,如果脏标志设置为true并且用户试图关闭应用程序,则使用散列函数。
可能存在更好的方式,但这是关于此事的两分钱。
答案 1 :(得分:0)
您可以使用comtypes ..
下面的代码段是从
复制粘贴的using ComTypes = System.Runtime.InteropServices.ComTypes;
ComTypes.IPersistFile persistFile = (ComTypes.IPersistFile)documnet;
//Checks an object for changes since it was last saved to its current file.
if (persistFile.IsDirty)
{
//do your stuff
}