Bonjour,
J'ai un souci avec la lecture d'un fichier texte généré par une application externe. Ce fichier est un fichier de logs qui se remplit très régulièrement mais peut également se vider pour se reremplir.
Voici actuellement le code "dégrossi" de ce que je fais pou le parcourir :
Ici, pas de souci pour lire les nouvelles lignes du fichier. Mais s'il se vide, comme le fpositionne initial est "après" le dernier octet du fichier, les lignes ajoutées ne sont plus lues...
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 nFic est un entier sLigne est une chaîne // ouverture du fichier de logs nFic = fOuvre("C:\Logs\toto.log",foLecture) SI nFic <> -1 ALORS // Le fichier est ouvert, on commence le traitement fPositionne(nFic,0,fpFin) BOUCLE sLigne = fLitLigne(nFic) SI sLigne <> EOT ALORS // Traitement de la ligne de log FIN Multitâche(-1) FIN FIN
Je ne sais pas si je suis très clair donc je vais donner un exemple :
Le fichier de logs initial :
Le programme se lance, et se positionne à la fin du fichier.truc
machin
chose
On ajoute une ligne "bidule" qui est alors lue correctement.
Mais après la ligne "bidule", le fichier est vidé et devient :
Ici, la ligne "chouette" n'est pas lue par le programme car le fpositionne initial renvoie une position supérieure à la fin du nouveau fichier.chouette
J'espère que là c'est plus compréhensible.
Je pense à une vérification permanente de la taille du fichier et dans le cas où la taille change pour être inférieur, on se repositionne au début du fichier avec fpositionne(nFic,0,fpDébut).
Avez-vous une meilleure solution ?
Partager