Aide pour ecrire dans un fichier qui existe

Résolu/Fermé
dana2019 Messages postés 21 Date d'inscription lundi 20 avril 2020 Statut Membre Dernière intervention 15 mai 2020 - 22 avril 2020 à 06:54
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 22 avril 2020 à 09:19
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);
              

            }

       
             



        }
A voir également:

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
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
22 avril 2020 à 08:38
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)
0
dana2019 Messages postés 21 Date d'inscription lundi 20 avril 2020 Statut Membre Dernière intervention 15 mai 2020
22 avril 2020 à 09:11
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




        }
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
22 avril 2020 à 09:16
Oui aussi, si le résultat te convient.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dana2019 Messages postés 21 Date d'inscription lundi 20 avril 2020 Statut Membre Dernière intervention 15 mai 2020
22 avril 2020 à 09:17
merci
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
22 avril 2020 à 09:19
De rien, pense à marquer le sujet résolu si c’est ok pour toi.
Les précédentes questions aussi d’ailleurs
0