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 :

Recherche dans plusieurs fichiers pas tres rapide


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut Recherche dans plusieurs fichiers pas tres rapide
    Bonjour,

    je fait des recherche d'une expression ou d'un mot dans des fichiers qui font en moyenne 29000 ligne, j'affiche un progressbar le problemme c'est que c'est hyper long la recherche se fait sr 300 fichiers, y a t-il un moyen pour que ce soit plus rapide, par exemple une api specifique, une dll ou un autre moyen quelquonque?

    mon algorithme de recherche est simple je balaye tous les fichiers du repertoire et pour chaque fichier je lit ligne par ligne en trouvant le mot a l'aide d'une expression reguliere. Ce sont des fichiers texte.

    Merci de votre aide.

  2. #2
    Membre chevronné Avatar de MetalGeek
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    412
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 412
    Par défaut
    Ca serait peut-être plus rapide en lisant à chaque fois tout le fichier plutôt que ligne par ligne, puis avec un bon vieux string.Contains() sur la chaîne représentant le fichier entier.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 8
    Par défaut
    tu utilise "System.IO.File":

    string Textefile = File.ReadAllText("chemin de ton fichier", System.Text.Encoding.Default);

    aprés tu utilise le String.contains

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    oui par contre le readtextall met dans le string tout le fichier, si je souhaite afficher uniquement les lignes dont le mot apparait ca le fera pas je pense.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    201
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 201
    Par défaut
    J'utiliserai plutôt String.IndexOf() du coup, et avec ça, ayant la position de la recherche. Il sera simple d'en ressortir la ligne.

  6. #6
    Rédacteur/Modérateur
    Avatar de Skalp
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 694
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 694
    Par défaut
    Citation Envoyé par DarkHerumor Voir le message
    J'utiliserai plutôt String.IndexOf() du coup, et avec ça, ayant la position de la recherche. Il sera simple d'en ressortir la ligne.
    Simple de ressortir la ligne avec un IndexOf à partir d'une string de tout le fichier ?
    Si les lignes ont la même longueur, oui. Mais sinon, à part relire le fichier ligne par ligne, je ne vois pas comment tu envisages l'algorithme.

    Autre piste : utiliser différents threads pour les recherches.
    En pseudo-code, ça donnerait quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    - Pour chaque fichier
         - lancer un thread
              - rechercher avec RegEx sur tout le contenu
              - si le fichier contient l'élément recherché : relancer la recherche par ligne

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 360
    Par défaut
    donc en gros mon traitement je doit le faire dans un thread pour chaque fichier.

    je vais me mettre aux thread alors.

    Merci.

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

Discussions similaires

  1. Recherche dans un fichier *.pas
    Par gaby277 dans le forum Windows 8
    Réponses: 8
    Dernier message: 14/02/2014, 18h49
  2. [WD15] recherche dans plusieurs fichiers
    Par stefano dans le forum WinDev
    Réponses: 5
    Dernier message: 07/02/2012, 19h11
  3. Réponses: 7
    Dernier message: 18/11/2007, 11h38
  4. Module de recherche de mots dans plusieurs fichiers
    Par hat_et_m dans le forum Autres Logiciels
    Réponses: 1
    Dernier message: 24/09/2006, 20h09

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