我正在创建一个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();
这可能吗?
答案 0 :(得分: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;
添加到您的文件中)
答案 1 :(得分:1)
您无法将记录附加到XML文件,您必须读取该文件然后重写它。
因此,只需检查文件是否存在,并从中读取记录。然后编写包含所有先前记录和新记录的文件。
答案 2 :(得分:0)
查看File.Exists方法here
答案 3 :(得分:0)
在尝试创建文件之前测试文件的存在是否受到“检查后的事情变化”竞争条件的影响。谁可以向您保证,您的应用程序在您选中后没有被抢占并暂停一段时间,其他人创建/删除该文件,您的应用程序再次运行并且与您的预期完全相反?
Windows(以及所有UN * X变体)支持文件打开/创建模式,允许以单次调用的方式执行create-if-none -istant / open-if-existant操作。
就.NET而言,这意味着您的任务(创建XML文件)您首先使用适当的模式创建System.IO.FileStream,请参阅http://msdn.microsoft.com/en-us/library/system.io.filemode.aspx然后将该流传递给XmlWriter构造函数。这比仅仅执行“存在”检查更安全,并希望获得最佳效果。