Bonjour,

Je suis actuellement en stage et j'ai une problématique. Je possède un fichier texte de 39238 ligne. Mon traitement sur ce fichier fonctionne très bien mais le temps d’exécution est énorme. Voila le code que j'utilise pour charger le fichier:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
 'Variable pour récuperer toute les lignes du fichier log
        Dim listeLigne As IEnumerable(Of String)
 
        'On récupere toute les ligne du fichier
        listeLigne = File.ReadLines(chemin)
J'ai eu pour idée de réduire ce temps en partitionnant mon fichier mais je n'ai pas réussi a écrire un algorithme qui marche.
Voila ce que j'ai actuellement :

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
 
  'DECLARER un lecteur de fichier 
        Dim monlecteur As StreamReader
        monlecteur = StreamReader.Null
 
        'DECLARER une collection pour les lignes du fichier 
        Dim meslignes As New ArrayList
        Try
            'cheminCompletFichier est le chemin complet du fichier à lire 
            monlecteur = New StreamReader(cheminCompletFichier)
            With monlecteur
                'POSITIONNER le flux au début du fichier 
                .BaseStream.Seek(0, SeekOrigin.Begin)
                .BaseStream.Seek(100, SeekOrigin.End)
                .BaseStream.WriteTimeout = 5000
                'TANT QUE le lecteur a quelquechose à lire 
                While (.Peek > 0)
                    'LIRE une ligne du fichier et l'ajouter à meslignes 
                    Console.WriteLine(.ReadLine)
                    meslignes.Add(.ReadLine)
                End While
            End With
        Catch ex As Exception
            Debug.WriteLine(ex.ToString)
            Console.WriteLine(ex.Message)
        Finally
            'FERMER le lecteur en tout etat de cause 
            monlecteur.Close()
        End Try
 
        Return (meslignes)
 
    End Function