none
Comment lire plusieurs fichiers txt pour compter le nombre d’occurrence d'une chaîne? RRS feed

  • Question

  • Bonjour

    Je code actuellement une application qui doit permettre l'automatisation de transfert ftp ainsi que de calcul de production.

    Ainsi dans les fichiers txt que je reçoit, je dois compter le nombre de fois où sera écrit la chaîne "OFF", signal qu'une planche a été produite. 

     J'ai donc regardé pour un streamreader, en coinjoint avec linq, mais je n'y arrive pas =\ 

    Auriez vous une idée?

    Merci d'avance.


    • Modifié Sh4ke lundi 25 juin 2012 13:38
    lundi 25 juin 2012 13:00

Réponses

  • Bonjour,

    Et pour plusieurs fichiers, cela donnerait quelque chose comme cela:

    private void button2_Click(object sender, EventArgs e)
        {
          string cheminRepertoire = "c:\\temp\\";
          if (!cheminRepertoire.EndsWith("\\"))
          {
            cheminRepertoire += "\\";
          }
    
          string chaineRecherchee = "off";
          int nombreOccurence = 0;
          try
          {
            if (Directory.Exists(cheminRepertoire))
            {
              foreach (string fichier in Directory.GetFiles(cheminRepertoire))
              {
                List<string> contenuFichier = new List<string>();
                using (StreamReader sr = new StreamReader(textBox1.Text))
                {
                  while (!sr.EndOfStream)
                  {
                    contenuFichier.Add(sr.ReadLine());
                  }
                }
    
                foreach (string ligne in contenuFichier)
                {
                  if (ligne.Contains(chaineRecherchee))
                  {
                    nombreOccurence++;
                  }
                }
              }
            }
            else
            {
              MessageBox.Show("Le répertoire n'existe pas");
            }
          }
          catch (Exception)
          {
            // on continue la procédure si un fichier est locké
          }
    
          label1.Text = "On a trouvé " + nombreOccurence.ToString() + " fois le mot " + chaineRecherchee;
        }


    fred on youTube
    PHP MySQL Web Site Creator
    fred

    • Proposé comme réponse fred75 lundi 25 juin 2012 17:31
    • Marqué comme réponse Sh4ke lundi 25 juin 2012 18:25
    lundi 25 juin 2012 17:31

Toutes les réponses

  • Bonjour,

    Voici un exemple pour un fichier:

    namespace CountWords
    {
      using System;
      using System.Collections.Generic;
      using System.IO;
      using System.Windows.Forms;
    
    
      public partial class Form1 : Form
      {
        public Form1()
        {
          InitializeComponent();
        }
    
        private void button1_Click(object sender, EventArgs e)
        {
          string chaineRecherchee = "off";
          int nombreOccurence = 0;
          List<string> fichier = new List<string>();
          using (StreamReader sr = new StreamReader(textBox1.Text))
          {
            while (!sr.EndOfStream)
            {
              fichier.Add(sr.ReadLine());
            }
          }
    
          foreach (string ligne in fichier)
          {
            if (ligne.Contains(chaineRecherchee))
            {
              nombreOccurence++;
            }
          }
    
          label1.Text = "On a trouvé " + nombreOccurence.ToString() + " fois le mot " + chaineRecherchee;
        }
    
        private void Form1_Load(object sender, EventArgs e)
        {
          textBox1.Text = @"c:\temp\test.txt";
        }
      }
    }


    fred on youTube
    PHP MySQL Web Site Creator
    fred

    lundi 25 juin 2012 17:15
  • Bonjour,

    Et pour plusieurs fichiers, cela donnerait quelque chose comme cela:

    private void button2_Click(object sender, EventArgs e)
        {
          string cheminRepertoire = "c:\\temp\\";
          if (!cheminRepertoire.EndsWith("\\"))
          {
            cheminRepertoire += "\\";
          }
    
          string chaineRecherchee = "off";
          int nombreOccurence = 0;
          try
          {
            if (Directory.Exists(cheminRepertoire))
            {
              foreach (string fichier in Directory.GetFiles(cheminRepertoire))
              {
                List<string> contenuFichier = new List<string>();
                using (StreamReader sr = new StreamReader(textBox1.Text))
                {
                  while (!sr.EndOfStream)
                  {
                    contenuFichier.Add(sr.ReadLine());
                  }
                }
    
                foreach (string ligne in contenuFichier)
                {
                  if (ligne.Contains(chaineRecherchee))
                  {
                    nombreOccurence++;
                  }
                }
              }
            }
            else
            {
              MessageBox.Show("Le répertoire n'existe pas");
            }
          }
          catch (Exception)
          {
            // on continue la procédure si un fichier est locké
          }
    
          label1.Text = "On a trouvé " + nombreOccurence.ToString() + " fois le mot " + chaineRecherchee;
        }


    fred on youTube
    PHP MySQL Web Site Creator
    fred

    • Proposé comme réponse fred75 lundi 25 juin 2012 17:31
    • Marqué comme réponse Sh4ke lundi 25 juin 2012 18:25
    lundi 25 juin 2012 17:31
  • Merci beaucoup :)
    lundi 25 juin 2012 17:58