2015-05-13 28 views
0

我在C#中創建XML文件並在其中寫入數據。但是,如果f例外,文件應該回滾。但是在例外的情況下,文件將以不完整的格式和數據生成。我只是希望在異常生成時不應該生成文件。我使用下面的代碼來生成文件如何在c中發生異常時回滾XML文件#

using (XmlWriter writer = XmlWriter.Create(strFileName)) 
{ 
writer.WriteStartElement("Head");//Start Head 
writer.WriteElementString("Date", dtm.ToString("yyyy-MM-dd hh:mm:ss.fff")); 
writer.WriteEndElement();//End Head 
writer.Flush(); 
} 
+0

只需將它包裝在'try ... catch'中並在'catch'中刪除該文件即可。 –

回答

5

簡單做法是隻建立整個文檔了與內存開始,然後只有它在最後寫。這幾乎可以肯定會導致更簡單的代碼,甚至撇開「不寫無效日期」的一面。唯一的缺點是如果你想寫一個你不想在內存中的大文件。

個人而言,我會建議使用LINQ to XML - 使用轉換爲其他類型的,所以你可以使用:

element.Add(new XElement("Date", dtm)); 

...這將使用正確 XML日期/時間格式而不是您目前得到的(使用hh而不是HH;有關類似常見錯誤的更多信息,請參閱我的blog post on date/time text conversions)。

+0

絕對同意:*正確的XML數據/時間格式* – AmatuerDev

+0

但我只是想知道有什麼方法可以回滾XML文件以防異常。如果有什麼方法,請幫我 –

+0

@AlinaDilshad:如果你已經寫過這個文件,不要 - 在寫之前你基本上想複製或移動原始文件到別的地方。沒有任何特定於XML的內容。但正如我所說,如果你延遲寫任何東西*直到你準備好整個文檔,那麼如果在準備過程中發生異常,你將不會寫任何東西 - 所以這是實現「不要寫東西」的最簡單方法銷燬你想要的舊文件「行爲,不是嗎? –

相關問題