如何在创建文件之前检查文件是否存在

时间:2009-10-09 13:58:25

标签: asp.net xml file-io

我正在创建一个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作为主键,如果用户尝试进行重复输入,我们需要避免

这可能吗?

4 个答案:

答案 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构造函数。这比仅仅执行“存在”检查更安全,并希望获得最佳效果。