2017-09-04 94 views
-1

我正在做一个文字处理器。问题是如何检查一个文件是否保存在C#中?就像当用户点击按钮时,程序会检查文件是否保存,如果是则关闭文件,否则程序会要求用户确认用户是否要关闭文件。检查文件是否已经保存在C#中的最佳方法是什么?

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

回答

2

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

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

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

可能存在更好的方法,但这是我的两分钱。

+0

粘贴如果'dirty'标志_dirty_那么它是** **脏。散列只能用于在文件被修改超出用户范围之外(如多用户编辑(OneNote)),但然后我可能会使用一些版本字段而不是比较我的流行文件 – MickyD

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 

} 
+0

//做你的东西的东西是当文件被保存或不保存? – Viettungvuong

+0

未保存。文件很脏。 – Naidu

+0

虽然绝对正确,但为了得到'IsDirty'标志 – MickyD

相关问题