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 :

FileReader long (fichier texte)


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 98
    Par défaut FileReader long (fichier texte)
    Bonsoir a tous je vous explique mon problème, je possède un fichier .txt d'environ 50.000 lignes. Les lignes ont pour moyenne 40 caractères par lignes, ce qui fait un ficher léger, moins de 2mo. Seulement a l'ouverture de celui ci le pc met enormément de temps, alors que j'ai un bon pc.... Voici la facon dont j'ai procédé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     Dim fileReader As String
    fileReader = My.Computer.FileSystem.ReadAllText(openfiledialog.FileName)
    RichTextBox1.Text = fileReader

    Voila je sais pas trop quoi faire, quand c'est pour un fichier de 400 lignes aucuns soucis mais 50.000 le pc met vraiment beaucoup de temps..En espérant que quelqu'un puisse m'aider ..
    Cordialement.

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 903
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je n'ai jamais essayé, donc, je ne sais pas ce que cela donne à la fin; mais il y aurait moyen de lire ton fichier texte comme un fichier de base de données.

    Quelques chaînes de connexion dans "la bible"

    Je ne sais pas ce que cela donne avec 50 000 lignes et il y a seulement une partie du code qui correspond actuellement à ton besoin. (La partie avec un TextFieldParser):

    https://dotnet.developpez.com/telech...nes-a-afficher

    Rien n'empêche de prendre la partie de lecture du fichier et de l'intégrer à ton code. En faisant probablement les modifications qui s'imposent.

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 199
    Par défaut
    je pense que c'est le richtextbox qui n'est pas fait pour contenir tout ca
    essaye dans un textbox normal pour confirmer
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Expert confirmé
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 197
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Quel est l'intérêt de charger 50000 lignes dans un RichText ?

    Pour l'utilisateur, ça sert à rien (il ne verra au mieux qu'une trentaine de lignes à la fois).
    Et pour le programme, déjà tout charger en mémoire n'est pas forcément une bonne idée, mais surtout, les afficher pour travailler dedans en est une bien pire.

    Essaie de bufferiser tes lectures, pour ne charger que ce qui est réellement affiché à l'écran.

    Si c'est pour rechercher une ligne dans le fichier, tu peux regarder les bouts de code que j'avais proposé ici, mais pas certain que ce soit en rapport avec ce que tu veux faire :
    https://www.developpez.net/forums/d1...xt-volumineux/

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2013
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2013
    Messages : 98
    Par défaut
    Bonsoir, je mettais 50.000 lignes dans une rich text box pour faire des test car jutilisais "For Each line in RichTextBox1.Lines", effectivement en utilisant une textbox c'est plus rapide, mais j'ai du utiliser .Split ducoup.
    Merci pour vos réponses, on peux dire que mon soucis es résolu
    C'est un fichier m3u qui contient des noms de chaines et le flux video correspondant (iptv). Je charge les chaines dans une listview.

    Citation Envoyé par StringBuilder Voir le message
    Bonjour,

    Quel est l'intérêt de charger 50000 lignes dans un RichText ?

    Pour l'utilisateur, ça sert à rien (il ne verra au mieux qu'une trentaine de lignes à la fois).
    Et pour le programme, déjà tout charger en mémoire n'est pas forcément une bonne idée, mais surtout, les afficher pour travailler dedans en est une bien pire.

    Essaie de bufferiser tes lectures, pour ne charger que ce qui est réellement affiché à l'écran.

    Si c'est pour rechercher une ligne dans le fichier, tu peux regarder les bouts de code que j'avais proposé ici, mais pas certain que ce soit en rapport avec ce que tu veux faire :
    https://www.developpez.net/forums/d1...xt-volumineux/
    Un petit peu au dessus de mes compétences je pense, il es jamais trop tard pour apprendre me direz vous mais je suis un peu largué la

  6. #6
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    For Each line in RichTextBox1.Lines
    Tu peux utiliser exactement le même code avec une TextBox dont la propriété MultiLine est fixée à True :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each line As String in TextBox1.Lines
    De plus, tu peux lire ton fichier ligne par ligne avec ReadLine ce qui permettra à ton système de moins buffériser (sous réserve du format de ton fichier) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim FichierEntree As New StreamReader("X:\MonFichierALire.TXT")
     
    Do Until FichierEntree.Peek = -1				
        TextBox1.Lines.Add(FichierEntree.ReadLine())	
    Loop									 
     
    FichierEntree.Close()
    Bonne journée,

Discussions similaires

  1. Conversion de longs fichiers texte en CSV
    Par cantador dans le forum Delphi
    Réponses: 26
    Dernier message: 03/12/2014, 14h56
  2. temps insertion fichier texte trop long
    Par developpeur71 dans le forum Windows Forms
    Réponses: 34
    Dernier message: 16/12/2009, 14h39
  3. Réponses: 0
    Dernier message: 19/05/2009, 16h02
  4. [Toutes versions] Manipulation de longs fichiers texte
    Par DSJ63 dans le forum Excel
    Réponses: 10
    Dernier message: 22/04/2009, 11h01
  5. [Fichier] Lire un fichier texte long
    Par _Eric_ dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 18/08/2004, 15h22

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