2017-09-04 42 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

相關問題