检查文件是否已在C#中保存的最佳方法?

时间:2017-09-04 02:13:25

标签: c#

我正在制作一个文字处理器。问题是如何检查文件是否保存在C#中?就像用户点击 X 按钮一样,程序会检查文件是否已保存,如果是,则会关闭文件,否则程序会要求用户确认用户是否要关闭文件。

我认为使用MD5哈希可能是一种实用的方式,但这是最好的方法吗?

2 个答案:

答案 0 :(得分:2)

您可能希望使用“脏标志”来跟踪文件是否已被修改。它首先设置为false,一旦用户修改内容,该标志就设置为true。保存修改后,标志再次设置为false。这种方法的缺点是你在保存后修改内容,然后再次修改它与保存的版本类似,你不会知道它是一样的。

或者,您可以使用散列函数。这很好,因为它确实比较了内容,但它可能会导致大文件的性能问题(你应该测试它是否有问题)。还有碰撞的可能性,但除非你选择一个非常糟糕的散列函数,否则它们不应成为问题。

当然,当用户修改内容时,也可以组合这两种方法并使用脏标志,如果脏标志设置为true并且用户试图关闭应用程序,则使用散列函数。

可能存在更好的方式,但这是关于此事的两分钱。

答案 1 :(得分:0)

您可以使用comtypes ..

下面的代码段是从

复制粘贴的

https://social.msdn.microsoft.com/Forums/vstudio/en-US/9f978a32-845c-4823-9780-2f184ba435a1/how-to-check-if-word-document-has-changes?forum=vsto

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

}