none
enregistrer et ne pas ecraser un fichier xml

    Question

  • bonjour,

    je voudrais enregistrer un fichier texte en xml mais ne pas ecraser les fichier identiques portant le mm nom.

    voici le code que j'utilise:

     DataSet ds = new DataSet();
                DataTable dt = new DataTable();
                dt.TableName = "Information";
                dt.Columns.Add("nom");
                dt.Columns.Add("mdp");
                dt.Columns.Add("heure");
                dt.Columns.Add("libelle");
                ds.Tables.Add(dt);
    
    
    
                DataRow row = ds.Tables["Information"].NewRow();
                row["nom"] = textBox1.Text;
                row["mdp"] = textBox2.Text;
                row["heure"] = label6.Text;
                row["libelle"] = "Tentative de connection erroné de cette utilisateur";
                ds.Tables["Information"].Rows.Add(row);
            
    
    
    
                ds.WriteXml("D:\\logfile.xml");
                

    et il marche bien seulement qu'il remplace les fichiers similaires( portant le mm nom ) chose que je veux pas.

    merci de m'aider..


    Cardinal dev

    mardi 21 juin 2016 16:38

Réponses

  • Bonjour,

    Ben vous lui donnez le nom que vous voulez ?!!! Si vous voulez un nom aléatoire (et unique) vous pouvez faire :

    var fileName = string.Format("{0}.xml", Guid.NewGuid().ToString());

    Bon le nom sera pas sexy, mais il sera unique.

    Après, vous pouvez faire un nom avec compteur en vérifiant à chaque fois que le nom existe ou pas...


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    mercredi 22 juin 2016 05:22
  • merci. j'ai compris voici ce que j'ai fait qui marche:

     if (File.Exists("D:\\logfile.xml"))
                {
                    ds.WriteXml("D:\\logfile2.xml");
                }
                else if (File.Exists("D:\\logfile2.xml"))
                {
                    ds.WriteXml("D:\\logfile3.xml");
                }
                else if (File.Exists("D:\\logfile3.xml"))
                {
                    ds.WriteXml("D:\\logfile4.xml");
                }
                else if (File.Exists("D:\\logfile4.xml"))
                {
                    ds.WriteXml("D:\\logfile5.xml");
                }

    mais peut-on pas faire cela de façon automatique.


    Cardinal dev

    mercredi 22 juin 2016 15:14

Toutes les réponses

  • Bonjour,

    Ben vous lui donnez le nom que vous voulez ?!!! Si vous voulez un nom aléatoire (et unique) vous pouvez faire :

    var fileName = string.Format("{0}.xml", Guid.NewGuid().ToString());

    Bon le nom sera pas sexy, mais il sera unique.

    Après, vous pouvez faire un nom avec compteur en vérifiant à chaque fois que le nom existe ou pas...


    Richard Clark
    Consultant - Formateur .NET
    http://www.c2i.fr
    Depuis 1996: le 1er site .NET francophone

    mercredi 22 juin 2016 05:22
  • Bonjour philippe gerard,

    pour compléter la réponse de Richard Clark, vous pouvez vérifier l'existence d'un fichier avec la méthode File.Exists et ainsi donner un nouveau nom aléatoire.

    Cordialement,

    mercredi 22 juin 2016 07:47
  • merci pour votre réponse, mais je voudrais savoir:

    comment je dois faire concrètement avec votre méthode à partir de mon code que je vous est présenté ?

    j'ai essayé avec sa:

    ds.WriteXml("D:\\logfile.xml");
                if (File.Exists("D:\\logfile.xml"))
                {
                    ds.WriteXml("D:\\logfile2.xml");
                }
                else if (File.Exists("D:\\logfile2.xml"))
                {
                    ds.WriteXml("D:\\logfile3.xml");
                }
                else if (File.Exists("D:\\logfile3.xml"))
                {
                    ds.WriteXml("D:\\logfile4.xml");
                }
                else if (File.Exists("D:\\logfile4.xml"))
                {
                    ds.WriteXml("D:\\logfile5.xml");
                }

    ya t-il pas moyens de simplifier le code pour que cela soit incrémenté automatiquement ?


    Cardinal dev



    mercredi 22 juin 2016 14:21
  • Bonjour,

    Quelque chose comme :

    Dim fileName As String = "D:\nomfichier.xml"
    
    If File.Exists(fileName) Then
        ' Générer un nouveau nom
        fileName = ...
    EndIf

    Cordialement

    mercredi 22 juin 2016 14:42
  • merci. j'ai compris voici ce que j'ai fait qui marche:

     if (File.Exists("D:\\logfile.xml"))
                {
                    ds.WriteXml("D:\\logfile2.xml");
                }
                else if (File.Exists("D:\\logfile2.xml"))
                {
                    ds.WriteXml("D:\\logfile3.xml");
                }
                else if (File.Exists("D:\\logfile3.xml"))
                {
                    ds.WriteXml("D:\\logfile4.xml");
                }
                else if (File.Exists("D:\\logfile4.xml"))
                {
                    ds.WriteXml("D:\\logfile5.xml");
                }

    mais peut-on pas faire cela de façon automatique.


    Cardinal dev

    mercredi 22 juin 2016 15:14