IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

comment lire un fichier ANSI ?


Sujet :

C#

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut comment lire un fichier ANSI ?
    Bonjour,
    Je dois extraire des données d'un fichier de log.
    J'utilise le code suivant :
    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"))
                   ...
              }
         }
    }
    Tel quel, ça ne fonctionne pas (je n'ai pas d'erreurs mais il n'arrive pas à reconnaître tous mes "line.Contains").
    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
    .
    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"))
                   ...
              }
         }
    }
    Mais cela ne fonctionne toujours pas, j'ai l'erreur suivante cette fois-ci au niveau de mon while
    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"}
    Je suis donc bloqué car je ne vois pas ce que je peux faire de plus pour lire correctement ce fichier ANSI.
    Merci pour votre aide.

  2. #2
    Membre habitué
    Inscrit en
    Novembre 2004
    Messages
    415
    Détails du profil
    Informations forums :
    Inscription : Novembre 2004
    Messages : 415
    Points : 138
    Points
    138
    Par défaut
    J'ai pu trouvé la solution :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    using (StreamReader reader = new StreamReader(fsRead, Encoding.Default))
    Et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((line = reader.ReadLine()) != null)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment lire un fichier XML ?
    Par jeromelef dans le forum Débuter
    Réponses: 6
    Dernier message: 29/06/2005, 15h52
  2. [BCB 5]Comment lire un fichier AVI avec un TAnimate ?
    Par Sitting Bull dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/09/2004, 11h57
  3. Comment lire un fichier DB en cours d'utilisation par 1 autr
    Par jbat dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/03/2004, 11h06
  4. Comment lire un fichier image
    Par Charlemagne dans le forum DirectX
    Réponses: 9
    Dernier message: 12/03/2004, 00h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo