2009-10-09 181 views
1

我正在創建一個xml文件。我需要先檢查文件是否存在。如果文件不存在,請創建它並從.cs文件添加數據cmg。如何在創建文件之前檢查文件是否存在

如果文件存在,請不要創建該文件,只需從.cs文件添加數據cmg即可。

我的代碼如下所示:

string filename="c:\\employee.xml"; 
XmlTextWriter tw=new XmlTextWriter(filename,null);//null represents 
the Encoding Type// 
tw.Formatting=Formatting.Indented; //for xml tags to be indented// 
tw.WriteStartDocument(); //Indicates the starting of document (Required)// 
tw.WriteStartElement("Employees"); 
tw.WriteStartElement("Employee","Genius"); 
tw.WriteStartElement("EmpID","1"); 
tw.WriteAttributeString("Name","krishnan"); 
tw.WriteElementString("Designation","Software Developer"); 
tw.WriteElementString("FullName","krishnan Lakshmipuram Narayanan"); 
tw.WriteEndElement(); 
tw.WriteEndElement(); 
tw.WriteEndDocument(); 
tw.Flush(); 
tw.Close(); 
  • 所以下次我們將數據添加到文件中,我們需要檢查文件是否退出和數據添加到XML文件
  • 和我們取得了EMPID作爲主鍵,如果用戶試圖進行重複輸入,我們需要避免

這可能嗎?

+0

雖然你的問題是關於檢查文件的存在,但我不禁要注意到如果數據存在,你將數據添加到XML文件中。如果存在XML文件,則不希望使用相同的方法將「追加」到現有文件中。只是一個想法。 –

回答

6
if (!File.Exists(filename)) 
{ 
    // create your file 
} 

if (File.Exists(filename)) 
{ 
    File.Delete(filename); 
} 

// then create your file 

File類是在System.IO命名空間(添加using System.IO;到您的文件)

+0

如果您的Web應用程序確實正在以C:root身份寫入文件,請檢查或至少爲File Permission例外做準備。 –

+0

o.k.w - 是的,好點! –

1

你可以不會將記錄追加到XML文件中,您必須讀取該文件,然後重寫它。

所以,只要檢查文件是否存在,並從中讀取記錄。然後編寫包含所有以前記錄和新記錄的文件。

0

在嘗試創建文件之前先測試文件是否存在,然後再進行「事後更改」競爭條件。誰可以保證你的應用程序在你選中之後沒有被搶佔並暫時休眠,其他人創建/刪除了這個文件,你的應用程序又可以重新運行並且完全與你想要的完全相反?

Windows(以及所有的UN * X變體)支持文件打開/創建模式,允許通過單個調用執行創建 - 如果不可用/打開如果存在的操作。

就.NET而言,這意味着您的任務(創建一個XML文件),您首先創建一個System.IO.FileStream與適當的模式,請參閱http://msdn.microsoft.com/en-us/library/system.io.filemode.aspx,然後將該流傳遞給XmlWriter構造函數。這比單純執行「存在」檢查並希望獲得最大的安全更安全。

相關問題