2009-10-09 21 views
1

Je crée un fichier XML. Je dois d'abord vérifier si le fichier existe ou non. Si le fichier n'existe pas, créez-le et ajoutez les données cmg à partir d'un fichier .cs.comment vérifier si un fichier existe avant de le créer

Si le fichier existe, ne créez pas le fichier ajoutez simplement la cmg de données à partir d'un fichier .cs.

Mon code ressemble à ceci:

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(); 
  • donc la prochaine fois que nous ajoutons des données dans un fichier, nous devons vérifier si les sorties de fichiers et ajouter des données au fichier xml
  • et comme nous l'avons fait EMPID en tant que clé primaire, si l'utilisateur essaie de faire une entrée en double nous devons éviter

Est-ce possible?

+0

Bien que votre question concerne la vérification de l'existence d'un fichier, je ne peux m'empêcher de remarquer que vous ajoutez des données à un fichier XML s'il existe. Si un fichier XML existe, vous ne voudriez pas utiliser la même méthode pour 'ajouter' au fichier existant. Juste une pensée. –

Répondre

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

ou

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

// then create your file 

File classe est dans l'espace de noms System.IO (ajouter using System.IO; à votre fichier)

+0

Vérifiez ou préparez au moins l'exception d'autorisation de fichier si votre application Web écrit effectivement un fichier à la racine C:. –

+0

o.k.w - oui, bon point! –

1

Vous pouvez N'ajoutez pas d'enregistrements à un fichier XML, vous devez lire le fichier, puis le réécrire. Donc, vérifiez simplement si le fichier existe, et lisez les enregistrements à partir de celui-ci. Ensuite, écrivez le fichier incluant tous les enregistrements précédents et le nouvel enregistrement.

0

Le test de l'existence d'un fichier avant de tenter de le créer de manière inhérente est soumis à une condition de concurrence "les choses changent après vérification". Qui peut vous garantir que votre application n'est pas préemptée et mise en veille un moment après avoir vérifié, quelqu'un d'autre crée/supprime ce fichier, votre application se remet en marche et fait exactement le contraire de ce que vous aviez prévu?

Windows (ainsi que toutes les variantes UN * X) prend en charge les modes d'ouverture/de création de fichiers qui permettent d'effectuer cette opération de création-si-non-existante/ouverte-si-existante en un seul appel.

En ce qui concerne .NET, cela signifie pour votre tâche (créer un fichier XML) que vous devez d'abord créer un System.IO.FileStream avec les modes appropriés, voir http://msdn.microsoft.com/en-us/library/system.io.filemode.aspx, puis transmettre ce flux au constructeur XmlWriter. C'est plus sûr que de simplement effectuer un contrôle «existe» et espérer le meilleur.

Questions connexes