.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); } } } } |
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 | +------------+----------------------+----------------------+---------------------------------+
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]); } } } } } } |
Si vous exécutez le programme, vous devriez visualiser les trois emails présents dans le fichier initialement produit.
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 :