Je dois écrire des données de journal système (généralement pas plus de 100 caractères à la fois) dans un fichier journal basé sur des événements particuliers. Mais la taille de ce fichier journal est faible (environ 4 Ko, par exemple), et je dois envelopper les journaux lorsque la taille du fichier atteint la limite. Tout en entourant, j'ai besoin de préserver les dernières informations, et plus tard le présenter dans l'ordre chronologique comme il a été écrit dans le fichier. Quelle est la meilleure façon de procéder? Je veux éviter de faire des copies du fichier pour le faire.Écriture de données dans un fichier texte de taille restreinte en C
0
A
Répondre
7
Pour écrire dans un fichier restreint:
call ftell to find out where you are in the file
call fwrite to write as much as you can, with respect to restricted size
if you couldn't write the whole message
call fseek to return to the start of the file
call fwrite to write the remainder of the message
Pour répondre à vos exigences modifiées, vous devez utiliser un fichier basé sur des enregistrements. Choisissez la taille d'arecord légèrement plus grande que le plus grand message et donnez un timestamp à chaque message. L'algorithme que j'ai décrit fonctionne toujours, sauf que vous revenez au début si vous ne pouvez pas écrire le message entier. Vous aurez également besoin d'écrire une petite application pour lire le fichier et présenter le contenu dans l'ordre chronologique.
Vous pouvez également étudier l'utilisation d'une bibliothèque de journalisation existante, telle que log4c.
Questions connexes
- 1. données Écriture dans un fichier texte à la position particulière
- 2. IOException DataGridView écriture dans le fichier texte C#
- 3. L'entrée de zone de texte en C# peut-elle être restreinte à un type formaté?
- 4. Problème d'ouverture/écriture dans un fichier texte dans ASP.NET
- 5. écriture de données d'un programme dans un fichier
- 6. C# et fichier texte dans un jeu de données typé
- 7. Restriction ou limitation de taille de fichier en C#
- 8. Écriture de fichier journal imprévisible en PHP
- 9. Écriture de XMLDocument non échappé en C#
- 10. Comment rendre un fichier accessible en écriture dans VB?
- 11. Lecture/écriture de données depuis/vers un fichier en PL/SQL sans utiliser UTL_FILE
- 12. Écriture dans c-string
- 13. Chemin/taille du fichier en C#
- 14. Fichier texte en tant que source de données dans SSRS
- 15. Compiler les erreurs lors de la lecture/écriture de la taille de plusieurs structures au fichier
- 16. c de l'entrée de fichier texte aide
- 17. Taille de l'instance en C#
- 18. Afficheur de texte pour fichier journal de grande taille
- 19. Comment écrire plusieurs zones de texte dans un fichier txt généré en programme en C#?
- 20. Écriture de texte transparent sur l'image
- 21. C# générant des vignettes taille de fichier
- 22. fichier image en écriture à la base de données de type BLOB (PHP)
- 23. Comment tronquer un fichier en C?
- 24. Importer un fichier texte au format bizarre en C#
- 25. Problèmes de remplacement de texte dans un fichier texte
- 26. Sous linux: écriture dans un FIFO
- 27. Le fichier C# en lecture/écriture Le partage de fichiers ne semble pas fonctionner
- 28. Quelle est la meilleure façon de remplacer du texte dans un fichier en utilisant C#/.NET?
- 29. charger des données dans un fichier texte à partir de vues base de données Oracle
- 30. Détermination de la taille d'un fichier futur alors que les données sont encore en mémoire
J'étais sous l'impression que la valeur de retour ftell pourrait ne pas être le nombre exact d'octets depuis le début du fichier. –
Ce sera le cas si vous ouvrez le fichier en mode binaire. –
@Neil: J'ai entendu dire que les systèmes d'exploitation les plus modernes ignorent le drapeau "b" lors de l'ouverture des fichiers et les ouvrent en mode binaire, mais maintenant que j'essaie de vérifier la validité de cette requête, rien ne semble apparaître. Savez-vous si c'est vrai? – dreamlax