Bonjour,
Je dois extraire des données d'un fichier de log.
J'utilise le code suivant :
Tel quel, ça ne fonctionne pas (je n'ai pas d'erreurs mais il n'arrive pas à reconnaître tous mes "line.Contains").
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 FileStream fsRead = new FileStream(ConfigurationManager.AppSettings["inputLogFile"], FileMode.Open, FileAccess.Read, FileShare.ReadWrite); if (fsRead != null) { using (StreamReader reader = new StreamReader(fsRead)) { string line = ""; while ((line = reader.ReadLine()) != null) { ... if (line.Contains("Le paramètre 'toto' est requis")) ... } } }
En ouvrant ce fichier de log dans Notepad++, le menu Encodage m'indique que c'est de l'ANSI.
Si je copie colle le contenu du fichier dans un nouveau fichier dont Notepad++ m'indique que l'encodage est UTF-8 et que c'est ce dernier que je passe dans mon programme, alors ça fonctionne bien.
Je cherche donc à modifier mon code pour que je n'ai pas cette étape manuelle à faire afin de pouvoir automatiser cette tâche.
Je cherche donc à transformer de l'ANSI en UTF-8 en appliquant le code suivant.
Il n'y a pas de Encoding.ANSI à proprement parler mais la définition de Encoding.Default est :.Gets an encoding for the operating system's current ANSI code page
Mais cela ne fonctionne toujours pas, j'ai l'erreur suivante cette fois-ci au niveau de mon while
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 FileStream fsRead = new FileStream(ConfigurationManager.AppSettings["inputLogFile"], FileMode.Open, FileAccess.Read, FileShare.ReadWrite); if (fsRead != null) { using (StreamReader reader = new StreamReader(fsRead, true)) { string line = ""; while ((line = Encoding.UTF8.GetString(Encoding.Default.GetBytes(reader.ReadLine()))) != null) { ... if (line.Contains("Le paramètre 'toto' est requis")) ... } } }Je suis donc bloqué car je ne vois pas ce que je peux faire de plus pour lire correctement ce fichier ANSI.System.ArgumentNullException : {"La référence de chaîne n'est pas définie à une instance d'une chaîne.\r\nNom du paramètre*: s"}
Merci pour votre aide.
Partager