Participer au site avec un Tip
Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Manipulation de fichiers textes en C#

Ecriture dans un fichier texte

.NET permet, bien entendu, la manipulation de fichiers textes. Ce premier exemple de code écrit dans un fichier texte le contenu de quelques objets en utilisant la classe System.IO.StreamWriter. Vous noterez l'utilisation de chaînes formatées afin de produire une mise en forme élégante dans le fichier texte.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
 39 
 40 
 41 
 42 
 43 
 44 
 45 
 46 
 47 
 48 
 49 
 50 
 51 
 52 
 53 
 54 
 55 
 56 
 57 
 58 
using System;
using System.Collections.Generic;
using System.IO;

namespace TestFile
{
   
    public class User
    {
        public User(int idUser, string login, string password, string email)
        {
            this.IdUser = idUser;
            this.Login = login;
            this.Password = password;
            this.Email = email;
        }

        public int IdUser { get; set; }
        public string Login { get; set; }
        public string Password { get; set; }
        public string Email { get; set; }

        public override string ToString()
        {
            return $"{this.IdUser}: {this.Login} {this.Password} @ {this.Email}";
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            List<User> users = new List<User>
            {
                new User(1, "James", "007", "bond@mi6.uk"),
                new User(2, "Jason", "treadstone", "bourne@cia.us"),
                new User(3, "Hubert", "oss117", "bonisseur-de-la-bath@espions.fr")
            };

            string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            string fullPath = Path.Combine(docPath, "WriteLines.txt");

            using (StreamWriter outputFile = new StreamWriter(fullPath))
            {
                string separator = "+------------+----------------------+----------------------+---------------------------------+";
                outputFile.WriteLine(separator);
                outputFile.WriteLine("| {0,-10} | {1,-20} | {2,-20} | {3,31} |", "Identifier", "Login", "Password", "Email");
                outputFile.WriteLine(separator);
                foreach(User user in users)
                {
                    outputFile.WriteLine($"| {user.IdUser, -10} | {user.Login,-20} | {user.Password,-20} | {user.Email,31} |");
                }
                outputFile.WriteLine(separator);
            }

        }
    }
}
Exemple d'écriture dans un fichier texte via la classe StreamWriter

Voici le contenu du fichier produit.

+------------+----------------------+----------------------+---------------------------------+
| Identifier | Login                | Password             |                           Email |
+------------+----------------------+----------------------+---------------------------------+
| 1          | James                | 007                  |                     bond@mi6.uk |
| 2          | Jason                | treadstone           |                   bourne@cia.us |
| 3          | Hubert               | oss117               | bonisseur-de-la-bath@espions.fr |
+------------+----------------------+----------------------+---------------------------------+
Fichier "WriteLines.txt"

Lecture dans un fichier texte

Ce second exemple de code montre comment lire un fichier texte ligne par ligne : on traite le fichier produit précédemment. Il montre aussi comment extraire des emails contenu dans une chaîne de caractères grâce aux expressions régulières.

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
using System;
using System.IO;
using System.Text.RegularExpressions;

namespace TestFile
{
   
    class Program
    {
        static void Main(string[] args)
        {
            string docPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
            string fullPath = Path.Combine(docPath, "WriteLines.txt");

            // Cette expression régulière permet de reconnaître le format d'un email.
            Regex emailEx = new Regex(@"[a-zA-Z0-9._-]+@[\w.-]+\.[a-zA-Z]{2,}", RegexOptions.Compiled);

            string line;
            using (StreamReader stream = new StreamReader(fullPath))
            {
                // On lit les lignes une à une.
                while ((line = stream.ReadLine()) != null)
                {
                    // Si la ligne de texte contient des emails, on les affiche.
                    MatchCollection results = emailEx.Matches(line);
                    foreach (Match m in results)
                    {
                        Console.WriteLine(m.Groups[0]);
                    }

                }
            }
        }
    }
}
Exemple de lecture d'un fichier texte via la classe StreamReader

Si vous exécutez le programme, vous devriez visualiser les trois emails présents dans le fichier initialement produit.