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

VB.NET Discussion :

Utilisation "abusif" de fichier texte: Que choisir ?


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Par défaut Utilisation "abusif" de fichier texte: Que choisir ?
    Bonjour,

    je conçois un programme de type winForm qui génère des statistiques à partir d'un fichier texte. Ce fichier sera utiliser de plusieurs manières.

    J'ai fais quelques tests avec un streamReader mais je ne peux qu'avancer dans mon fichier, ce qui n'est pas suffisant

    Je désire pouvoir:
    - avancer/reculer
    - me rendre à une ligne en particulier
    - rechercher dans un fichier texte une string en particulier
    - etc

    Donc, je me demande quel type d'objet je devrais utiliser ?

    Merci de votre aide et/ou suggestions!
    David

  2. #2
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Si tu n'as pas de contraintes de performances particulières, ne serait-il pas plus simple de lire complètement ton fichier en le chargeant dans un modèle objet explicite, puis d'établir l'ensemble de tes statistiques à partir de tes objets ? La maintenance en serait simplifiée (tu sépares accès aux données et règles métier).Mais ton fichier est peut-être trop énorme ?

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    201
    Détails du profil
    Informations personnelles :
    Âge : 80

    Informations forums :
    Inscription : Janvier 2007
    Messages : 201
    Par défaut
    Il me semble que tout dépend de la taille du dit fichier texte. Si la taille est telle qu'il ne soit pas abusif de charger les lignes dans un tableau de string ou dans une collection tout est dit. Sinon, une solution peut-être de le transformer en fichier à accès aléatoire pour le traitement.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Par défaut
    Il s'agit d'un fichier texte de 42k contenant environ 1000 lignes de textes et c'est le seul programme qui roulera sur cette machine. Donc, côté performance, je crois pas qu'il y est de problème.

    J'avais penser charger mon fichier dans un objet plu complexe du genre:
    - collection, etc Mais je ne connais pas trop ces types de données et je ne sais pas le quel est le plus adaptés à ma situation.

    Voici a quoi peut ressemble mon fichier:

    ------------------------------------------------------------
    [2007-07-03 / 07:49:42] Board In : R1LD "PCB Loading Complete"
    [2007-07-03 / 07:50:18] Board Out : R0CT "EOP Block Pass ... Carte terminée normalement"
    Delay Change : 00:00:07
    Delay : 00:00:43
    ------------------------------------------------------------
    [2007-07-03 / 07:50:39] Board In : R1LD "PCB Loading Complete"
    [2007-07-03 / 07:51:12] Board Out : R0CT "EOP Block Pass ... Carte terminée normalement"
    Delay Change : 00:00:07
    Delay : 00:00:39
    ------------------------------------------------------------
    [2007-07-03 / 07:54:16] Board In : R1LD "PCB Loading Complete"
    [2007-07-03 / 07:54:48] Board Out : R0CT "EOP Block Pass ... Carte terminée normalement"
    Delay Change : 00:00:07
    Delay : 00:00:38

    ETC ETC ETC Sur environs 1000 lignes

  5. #5
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    Vu que tes données sont plutôt simple, je chargerai tout.
    Je ne sais pas à quoi correspond un bloc de quatre lignes (De Board In à Delay), mais j'envisagerai les choses un peu comme ça (à toi de voir suivant le métier) :

    - une classe Board composée comme suit :
    - une propriété Date de type DateTime.
    - une propriété Message de type String.

    - une classe Block représentant un bloc de 4 lignes (à défaut d'un nom ayant du sens) composée comme suit :
    - une propriété BoardIn de type Board.
    - une propriété BoardOut de type Board.
    - une propriété DelayChange de type TimeSpan.
    - une propriété Delay de type TimeSpan.

    - une classe BlockCollection, collection d'éléments de type Block.

    Tu peux ainsi lire et charger ton fichier et développer des méthodes statistiques sur ta collection par exemple.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Par défaut
    Citation Envoyé par BCmDev
    Vu que tes données sont plutôt simple, je chargerai tout.
    Je ne sais pas à quoi correspond un bloc de quatre lignes (De Board In à Delay), mais j'envisagerai les choses un peu comme ça (à toi de voir suivant le métier) :

    - une classe Board composée comme suit :
    - une propriété Date de type DateTime.
    - une propriété Message de type String.

    - une classe Block représentant un bloc de 4 lignes (à défaut d'un nom ayant du sens) composée comme suit :
    - une propriété BoardIn de type Board.
    - une propriété BoardOut de type Board.
    - une propriété DelayChange de type TimeSpan.
    - une propriété Delay de type TimeSpan.

    - une classe BlockCollection, collection d'éléments de type Block.

    Tu peux ainsi lire et charger ton fichier et développer des méthodes statistiques sur ta collection par exemple.
    Malheureusement, le code que j'ai donné n'est pas représentatif de tout ce qui est dans le fichier.

    Ce peut être un bloc de 4, 2 ou 22 lignes. Un autre programme écrit des lignes dans ce fichier tout les x minutes. je peux commencer à "parser" le fichier et m'appercevoir que ce qu'il me faut pour compléter une stats donnée sera disponible dans les prochaines lignes écrites dans x minutes.

    Donc, le fait de faire des classes, etc je crois que ce serait bien si je saurais exactemement à quoi va ressembler le fichier et dans quel ordre seront les données. Mais dans mon cas, je n'ai pas ce luxe

    Donc, est-ce que ce serait une bonne idée de chargée dans une collection du genre:

    --------------------------------------------------------------
    collectionStatistique
    --------------------------------------------------------------
    | keyID | Vaue
    | 1 | [2007-07-03 / 07:49:42] Board In : R1LD "PCB Loading Complete"
    | 2 | [2007-07-03 / 07:50:18] Board Out : R0CT "EOP Block Pass ... Carte terminée normalement"
    | 3 | Delay Change : 00:00:07
    | 4 | Delay : 00:00:43


    Donc, c'est pas la collection la plus géniale qui soit mais on moins je pourrai la parcourir dans tout les sens, faire des recherches, etc Aussi, comme elle commencera la journée avec quelques lignes, qu'elle grossira jusqu'à atteindre 1000 lignes environ, cela reste quand même assez léger...je crois

  7. #7
    Membre chevronné
    Inscrit en
    Juin 2007
    Messages
    459
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 459
    Par défaut
    J'avoue ne pas trop savoir quoi te répondre.
    Si tes statistiques sont du style "Combien de temps s'écoule entre le Board In et le Board Out ?", tu vas être obligé de parser les String de ta collectionStatistique à chaque fois et refaire des tonnes de calculs...

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 22
    Par défaut
    Citation Envoyé par BCmDev
    J'avoue ne pas trop savoir quoi te répondre.
    Si tes statistiques sont du style "Combien de temps s'écoule entre le Board In et le Board Out ?", tu vas être obligé de parser les String de ta collectionStatistique à chaque fois et refaire des tonnes de calculs...
    Ouais...

    par contre, comme le fichier de stats ne sera pas très volumineux, un maximum de 1000 lignes en fin de journée, ce sera quandmême assez rapide.

Discussions similaires

  1. comment utiliser Notepad pour modifier un fichier texte?
    Par moon13_698 dans le forum Autres Logiciels
    Réponses: 7
    Dernier message: 06/05/2006, 15h41
  2. [SQL] Pourquoi utilise-t-on encore les fichiers texte?
    Par krimback dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 24/03/2006, 13h44
  3. fichier binaire ou texte , que choisir ?
    Par Djob dans le forum C++
    Réponses: 4
    Dernier message: 19/12/2005, 16h21

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