Ne prendre que des pavés d'un fichier
Bonjour,
J'ai mis en place un petit algorithme pour résoudre un problème mais je ne sais pas s'il est optimisé.
Voici un descriptif du problème :
J'ai un fichier qui se présente ainsi :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| ENTETE AAAA 20101202 0000000003XXXX
LIGNE1 BBBBBBBBBBB
LIGNE2 CCCCCCCCCC
LIGNE3 DDDDDDDDDD
ENTETE AAAA 20101201 0000000004XXXX
LIGNE1 EEEEEEEEEEE
LIGNE2 FFFFFFFFFFF
LIGNE3 GGGGGGGGGG
LIGNE4 HHHHHHHHHH
ENTETE AAAA 20101202 0000000005XXXX
LIGNE1 IIIIIIIIIIIIIIIIII
LIGNE2 JJJJJJJJJJJJJJJ
LIGNE3 KKKKKKKKKKK
LIGNE4 LLLLLLLLLLLL
LIGNE5 MMMMMMMM |
1- Je recherche la ligne ENTETE le plus récente. Le champ N°3 est le critère utilisé puisqu'il s'agit d'une date.
Code:
ENTETE AAAA 20101202
2- A partir du résultat obtenu en "1-", je recherche toutes les ENTETES les plus récentes. Ce qui est équivaut à :
Code:
1 2
| ENTETE AAAA 20101202 0000000003XXXX
ENTETE AAAA 20101202 0000000005XXXX |
3- A partir du résultat obtenu en "2-", je dois extraite les enregistrements associés à cette entete
Code:
1 2 3 4 5 6 7 8 9 10
| ENTETE AAAA 20101202 0000000003XXXX
LIGNE1 BBBBBBBBBBB
LIGNE2 CCCCCCCCCC
LIGNE3 DDDDDDDDDD
ENTETE AAAA 20101202 0000000005XXXX
LIGNE1 IIIIIIIIIIIIIIIIII
LIGNE2 JJJJJJJJJJJJJJJ
LIGNE3 KKKKKKKKKKK
LIGNE4 LLLLLLLLLLLL
LIGNE5 MMMMMMMM |
Pour information, le 4ème champ de l'ENTETE indique ne nombre d'enregistrements associés. Exemple :
Code:
ENTETE AAAA 20101202 0000000003XXXX
Cela signifie que 3 enregistrements sont associés à cette entete.
Code:
ENTETE AAAA 20101202 0000000103XXXX
Cela signifie que 103 enregistrements sont associés à cette entete.
Le souci que j'ai, est que je lis plusieurs fois le fichiers en entrée et cela peut être très couteux en terme de perf. Si vous avez une autre idée, je suis preneur.
Merci d'avance pour votre aide.
Cdlt