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 :

Lire un fichier ligne apres ligne


Sujet :

C#

  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut Lire un fichier ligne apres ligne
    Bonjour á tous,
    Svp j´aimerai savoir comment lire une fichier ligne apres ligne. en Effet j ai un fichier dont je dois lire la 1ere ligne faire le traitement de cette premiere ligne, puis lire la 2ieme ligne fait le traitement de cette 2ieme ect....
    Mais le code que j ai ecrit revient toujours lire la 1ere ligne du fichier apres le traitement. voila le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    if (File.Exists(s_sqlfile))
    i_lineCount = File.ReadLines(s_sqlfile).Count();
    int i_count;
    for (i_count = i_lineCount; i_count > 0; i_count--)
                                {
                                                         f_file = null;
                                        try
                                        {
                                            f_file = new System.IO.StreamReader(s_sqlfile);
                                        }
                                        catch
                                        {
                                            continue;
                                        }
                                        if ((s_sqlfileline = f_file.ReadLine()) != null)
                                        {
    traitement()
    }
    }
    comment faire pourque apres le traitement, que la seconde ligne du fichier soit traité.
    merci d´avance pour vos suggestions

  2. #2
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    Salut,


    c'est très simple il y a déja une méthode dans StreamReader :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
                StreamReader streamReader = new StreamReader(@"D:\tonfichier.txt");
                string ligne;
     
                while ((ligne = streamReader.ReadLine()) != null)
                {
                    // tu fais ton traitement par ligne ici
                }
                streamReader.Close();

  3. #3
    Membre averti Avatar de pascalCH
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Juillet 2006
    Messages
    187
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Formateur en informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 187
    Points : 369
    Points
    369
    Par défaut Autre méthode possible
    Le tout en 5 lgnes de code, sans se soucier si le fichier sera bien fermé puisque tout est en automatique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
                String[] lines = System.IO.File.ReadAllLines(fileName);
                foreach (String item in lines)
                {
                        TraiterLaLigne(item);
                }
    Attention, cela ne fonctionne que si le fichier est de taille raisonnable, si le fichier fait des gigas octets.. la mémoire va manquer !!
    La nature fait des choses extraordinaires, observons la et restons humble, on ne nous demande pas de refaire le monde mais juste de reproduire virtuellement des choses existantes ....

    et n'oubliez pas si vous aimez et quand vous avez la réponse

  4. #4
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    Salut
    merci dejá pour vos suggestions. j´ai essayé la Proposition de PixelJuice Avec la boucle While. mais le code revient toujours lire la 1 ere ligne puisque celle ci n est pas supprimer apres traitement.
    Avec la Proposition de PascalCH j´obtient les erreurs suivantes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    try
                                    {
                                        f_file = new System.IO.StreamReader(s_sqlfile);
                                    }
                                    catch
                                    {
                                        continue;
                                    }
     
                                     foreach (String item in f_file)
                                     {
                                          if ((s_sqlfileline = item.ReadLine()) != null)
                                            {
    Traitement()
    }
    }
    voila les 2 erreurs pour ce code
    Error 3 foreach statement cannot operate on variables of type 'System.IO.StreamReader' because 'System.IO.StreamReader' does not contain a public definition for 'GetEnumerator'
    Error 4 'string' does not contain a definition for 'ReadLine' and no extension method 'ReadLine' accepting a first argument of type 'string' could be found (are you missing a using directive or an assembly reference?)

    et lorsque j ecris le code comme suit le Programme revient toujours lire la 1 ere ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     String[] line = System.IO.File.ReadAllLines(s_sqlfile);
     
                                     foreach (String item in line)
                                     {
     
          try
                                            {
                                                f_file = new System.IO.StreamReader(s_sqlfile);
                                            }
                                            catch
                                            {
                                                continue;
                                            }
                                            if ((s_sqlfileline = f_file.ReadLine()) != null)
                                            {
    traitement()
    }
    }
    je pense que le 1er code est vraie. juste comment faire pour corriger les 2 erreurs?
    merci pour vos Remarques
    cordialement

  5. #5
    Membre chevronné
    Avatar de PixelJuice
    Homme Profil pro
    Ingénieur .NET & Game Designer
    Inscrit en
    Janvier 2014
    Messages
    640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Ingénieur .NET & Game Designer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2014
    Messages : 640
    Points : 2 149
    Points
    2 149
    Par défaut
    En quoi le programme avec la boucle While n'a pas marché ? Je suis curieux.

    C'est un code très simple , la boucle While lit la ligne , vérifie qu'elle n'est pas vide / null , et donc passe au traitement.
    Le traitement fini pour la ligne , la boucle While lit la ligne suivante , etc ...

    De plus je ne vois pas trop ce que tu veux faire avec ton code.

    foreach (String item in f_file) <== Pour chaque variable de type String dans f_file. Mais f_file est un StreamReader.

    item.ReadLine() <== item est un String , pas un StreamReader. C'est normal qu'il ne trouve pas de méthode associée.

    Je vais te montrer un exemple concret , tu peux prendre le code de moi ou pascalCH , les deux fonctionnent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
            private void LireFichier()
            {
                StreamReader streamReader = new StreamReader(@"D:\tonfichier.txt");
                string ligne;
     
                while ((ligne = streamReader.ReadLine()) != null)
                {
                    Traitement(ligne);
                }
                streamReader.Close();
            }
     
            private void Traitement(string ligne)
            {
                MessageBox.Show("Contenu de la ligne : " + ligne);
            }
    Tu n'as qu'a modifier la méthode Traitement() , ne te soucis même pas du reste.

  6. #6
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2014
    Messages : 146
    Points : 66
    Points
    66
    Par défaut
    Bonjour,
    merci sa fonctionne maintenant. j´avais fait une erreur en mettant la bouche while ((line = f_file.ReadLine()) !=null) á l Interieur d´ une boucle do..While c´est pourquoi le code lisait toujours la meme ligne quand le traitement n a pas fonctionnée.
    j´aimerais SVP que lorsque le traitement de la ligne a été fait sans erreur, que la ligne en question soit effacer du fichier. dans ce cas restera a l´interieur du fichier á la fin les lignes dont le traitement n´a pas marcher. quelle Methode utilisée?
    j ai essayer line.clear(); mais le string line ne contient pas de Methode clear().

    merci.

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

Discussions similaires

  1. [Batch] Afficher contenu d'un fichier texte une ligne après l'autre
    Par guiguir68 dans le forum Scripts/Batch
    Réponses: 5
    Dernier message: 22/08/2014, 13h43
  2. Réponses: 9
    Dernier message: 03/07/2014, 18h08
  3. lire un fichier sauf certaines lignes
    Par xavierdestev dans le forum Débuter
    Réponses: 5
    Dernier message: 24/10/2013, 20h39
  4. lire fichier .txt (NOTEPAD) ligne par ligne
    Par skambram dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/06/2009, 18h41
  5. lire un fichier de string ligne par ligne
    Par bilzzbenzbilz dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 11/02/2009, 10h44

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