Bonjour,
Cette discussion vient en parallèle à un autre post : http://www.developpez.net/forums/d14...hiers-paradox/
Je dois lire des fichiers .txt qui peuvent dans certains cas être très volumineux. Je me suis dit que peut être il y'aurait moyen d'alléger la méthode de lecture que j'utilise.
Voici ce que je fais :
On définit dans mon programme une date de début et une date de fin.
Je dois lire dans un à 3 fichiers (boucles imbriquées) qui sont formés comme ceci :
Ce que je fais dans mon code : je parcours chaque ligne du fichier en séparant par le ; chaque élement et en comparant l'élement 0 (la date) si elle est entre les dates de début et fin, si oui je fais récupère d'autres éléments de la ligne en cours pour calculer, vérifier autre chose.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 01/01/2014;1;1;0;3.5;2 01/01/2014;1;2;0;7;2 02/01/2014;3;1;0;5;4 //Ainsi de suite ...
Voilà à peu près ce que je fais, en sachant que je peux avoir un ou deux foreach qui peuvent s'imbriquer dans le principal foreach; en sachant que certains fichiers ont des dates qui remontent à 2012 (environ 400Mo le .txt), je comprends que ça peut prendre du temps.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 string monFichier = _file.GetCheminFichierExport("MON_GROS_FICHIER.TXT"); // Je récupère le chemin du fichier passé en paramètre string[] sep = {";"}; // Je définis le ; comme séparateur foreach ( var elem in File.ReadLines(monFichier, System.Text.Encoding.Default) .Select(elem => elem.Split(sep, StringSplitOptions.None)) // Je split les éléments de chaque ligne par le séparateur que j'ai défini { //Ici mon traitement }
Ma méthode de traitement est elle bonne ou y'a t il un moyen d'optimiser cette fonction pour faire plus rapide ?
Merci.
Partager