как проверить, существует ли файл перед его созданием - PullRequest
1 голос
/ 09 октября 2009

Я создаю XML-файл. Мне нужно сначала проверить, существует файл или нет. Если файл не существует, создайте его и добавьте cmg данных из файла .cs.

Если файл существует, не создавайте файл, просто добавьте cmg данных из файла .cs.

Мой код выглядит так:

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 ]

6 голосов
/ 09 октября 2009
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 голос
/ 09 октября 2009

Вы не можете добавлять записи в файл XML, вы должны прочитать файл и переписать его.

Итак, просто проверьте, существует ли файл, и прочитайте записи из него. Затем запишите файл, включая все предыдущие записи и новую запись.

0 голосов
/ 01 февраля 2010

Проверка на наличие файла перед попыткой его создания по своей сути подчиняется условию гонки «все меняется после проверки». Кто может гарантировать, что ваше приложение не прервано и не переведено в спящий режим на мгновение после того, как вы проверили, кто-то еще создает / удаляет этот файл, ваше приложение запускается снова и делает в точности то, что вы намеревались?

Windows (как и все варианты UN * X) поддерживает режимы открытия / создания файлов, которые позволяют выполнять операцию create-if-nonexistant / open-if-existant в виде одного вызова.

Что касается .NET, это означает, что для вашей задачи (создать файл XML) вы сначала должны создать System.IO.FileStream с соответствующими режимами, см. http://msdn.microsoft.com/en-us/library/system.io.filemode.aspx, а затем передать этот поток в конструктор XmlWriter. Это безопаснее, чем просто выполнить проверку «существует» и надеяться на лучшее.

0 голосов
/ 09 октября 2009

Взгляните на метод File.Exists здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...