Aide pour ecrire dans un fichier qui existe [Résolu]

Signaler
Messages postés
21
Date d'inscription
lundi 20 avril 2020
Statut
Membre
Dernière intervention
15 mai 2020
-
Messages postés
14478
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juillet 2020
-
Bonjour, j'essaie une liste des personnes à la fin de mon fichier texte mais cela m'affiche:

System.Collections.Generic.List`1[TPCsharp.Medecin]
quelqu'un peut-il m'aider je suis nouveau dans le langage


 public void ajouterUnmedecin()
        {
            string prenom;
            string nom;
            int code;

            Console.WriteLine("Prenom");
            prenom = Console.ReadLine();
            Console.WriteLine("Nom");
            nom = Console.ReadLine();

            while (true)
            {
               
                Console.WriteLine("Identificateur");
                code = Convert.ToInt32(Console.ReadLine());

                try
                {

                    //On lance une exception si le code n'est pas compris entre 100 et 999
                    while (code < 100 || code > 999)
                    {

                        throw new Exception("le code doit être compris entre 100 et 999");
                    }

                    break;
                }
                
                catch (Exception e)
                {

                    Console.WriteLine(e.Message);
                }

              


            }
            try
            {
                //verifie si le code existe dejà
                foreach (var medecin in _listeMedecin)
                {
                    if (medecin.verifier(code))
                    {
                        throw new Exception("Erreur");
                    }
                }
            }
            catch (Exception e)
            {

                Console.WriteLine(e.Message); 
            }
             //ajout d'un médecin
            _listeMedecin.Add(new Medecin(prenom, nom, code));

            using (StreamWriter fichier = new StreamWriter("medecins.txt",true))
            {

                //écriture dans le fichier
                fichier.WriteLine(_listeMedecin);
              

            }

       
             



        }

6 réponses

Salut,
avant d'écrire quoi que ce soit dans un fichier il faut avant tout l'ouvrir(le lire).
Je ne voit pas non plus l'intérêt de recourir à la console. Créer une chaîne de caractère et l'afficher pour contrôler serait plus efficace et rendrait votre code plus clair en se concentrant sur l'essentiel: l'écriture dans le fichier.

un exemple détaillé ici:

https://openclassrooms.com/fr/courses/218202-apprenez-a-programmer-en-c-sur-net/218129-lire-et-ecrire-dans-un-fichier
Messages postés
14478
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juillet 2020
554
Bonjour

@Rodala
Je ne voit pas non plus l'intérêt de recourir à la console.

Parce que les bons cours n’abordent les interfaces graphiques qu’après avoir fait maîtriser les concepts de base.
Dans son apprentissage, Dana n’en est pas encore là.
D’autre part, ton exemple parle de byte, de lecteur hexadécimal etc, alors que Dana veut écrire un fichier Ascii....

@Dana,
cette
fichier.WriteLine(_listeMedecin);
écrit dans le fichier ce que retourne la méthode ToString() de la classe de la variable _listeMedecin. Comme
Console.WriteLine(_listeMedecin);

Par défaut ToString retourne le type de la variable.
System.Collections.Generic.List`1[TPCsharp.Medecin] 

montre que _listeMedecin est une List<T> où T est du type Medecin de ton projet TPCsharp.

Tu ne peux pas réécrire la méthode ToString de List<T> donc la solution est d’itérer tous les éléments (avec une boucle for, foreach ou while), et des les écrire un à un dans le fichier.
Pour les écrire, soit tu as surchargé la méthode ToString de la classe médecin et tu t’en sert, soit tu devra construire une string composée des éléments que tu veux voir dans le fichier (avec string.format ou stringbuilder par exemple)
Messages postés
21
Date d'inscription
lundi 20 avril 2020
Statut
Membre
Dernière intervention
15 mai 2020

dans ma classe médecin je n'ai pas de méthode ToString() mais regarde ce que j'ai fais est cela écrit dans mon fichier j'aimerai savoir si c'est une possibilité aussi :
 public void ajouterUnmedecin()
        {
            string prenom;
            string nom;
            int code;

            Console.WriteLine("Prenom");
            prenom = Console.ReadLine();
            Console.WriteLine("Nom");
            nom = Console.ReadLine();

            while (true)
            {

                Console.WriteLine("Identificateur");
                code = Convert.ToInt32(Console.ReadLine());

                try
                {

                    //On lance une exception si le code n'est pas compris entre 100 et 999
                    while (code < 100 || code > 999)
                    {

                        throw new Exception("le code doit être compris entre 100 et 999");
                    }

                    break;
                }

                catch (Exception e)
                {

                    Console.WriteLine(e.Message);
                }




            }
            try
            {
                //verifie si le code existe dejà
                foreach (var medecin in _listeMedecin)
                {
                    if (medecin.verifier(code))
                    {
                        throw new Exception("Erreur");
                    }
                }
            }
            catch (Exception e)
            {

                Console.WriteLine(e.Message);
            }
            _listeMedecin.Add(new Medecin(prenom, nom, code));

            try
            {


                using (StreamWriter fichier = File.AppendText("medecins.txt"))
                {


                    fichier.Write(code);
                    fichier.Write(';');
                    fichier.Write(prenom);
                    fichier.Write(';');
                    fichier.Write(nom);
                    fichier.WriteLine();
                    
                   





                    fichier.Close();
                }

            }
            catch (Exception e)
            {

                Console.WriteLine(e.Message);
            }

            //ajout d'un médecin




        }
Messages postés
14478
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juillet 2020
554
Oui aussi, si le résultat te convient.
Messages postés
21
Date d'inscription
lundi 20 avril 2020
Statut
Membre
Dernière intervention
15 mai 2020

merci
Messages postés
14478
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 juillet 2020
554
De rien, pense à marquer le sujet résolu si c’est ok pour toi.
Les précédentes questions aussi d’ailleurs