Comment tronquer un fichier en c#?
Je suis en train d'écrire les actions effectuées par le programme en C# dans un fichier à l'aide de Trace.Writeln() fonction. Mais le fichier est trop grand. Comment tronquer ce fichier lorsqu'il grandit à 1 mo?
TextWriterTraceListener traceListener = new TextWriterTraceListener(File.AppendText("audit.txt"));
Trace.Listeners.Add(traceListener);
Trace.AutoFlush = true;
Ce qui doit être ajouté au-dessus du bloc
Vous devez spécifier quelle partie(s) du journal que vous voulez garder.
OriginalL'auteur user186246 | 2011-06-30
Vous devez vous connecter pour publier un commentaire.
Essayer de jouer avec FileStream.SetLength
FileStream
c'est la solution la plus simple, à l'aide deSetLength(0)
.Après la terminaison du processus, si j'ai recréer un nouveau processus, puis le code ci-dessus ajoutez le texte pour le fichier existant?
Si vous ne
SetLength(0)
sur un actifFileStream
, qui va tronquer le fichier sous-jacent.Nous notons que FileStream.SetLength avec un zéro de longueur est une très mauvaise idée pour un fichier journal; cependant, je trouve cette question avec un plus raisonnable des cas où c'est la bonne solution.
OriginalL'auteur sll
Fermez le fichier et ouvrez-la à l'aide de FileMode.Tronquer.
Certains journaux implémentations archives de l'ancien fichier sous un ancien nom avant de le rouvrir, afin de préserver un plus grand ensemble de données sans aucun fichier devient trop grand.
OriginalL'auteur Steve Townsend
Au lieu d'essayer de le faire vous-même, j'aimerais vraiment vous recommandons d'utiliser quelque chose comme log4net, il a beaucoup de ce genre de fonctionnalité utile construite en.
Je ne pense pas que c'est inapproprié réponse à une question à la réponse que l'OP a déclaré méthode montre une certaine inefficacité, et de suggérer une autre méthode.
Les bonnes réponses montrent code ou le lien spécifique à la fonction à utiliser. Si vous voulez que ce soit une bonne réponse, montrer comment utiliser log4net de faire ce que l'OP est de demander.
OriginalL'auteur Paul Sonier
Lorsque le fichier est plus de 500000 octets, il coupe le début de 250000 octets désactivé à partir du fichier de sorte que le reste du fichier est de 250000 octets de long.
OriginalL'auteur Steve
En faisant ceci:
1000000
... rappelez-vous,1 kbyte = 1024 bytes
, et la même chose s'applique pourmb
Personnellement, je ne voudrais pas vérifier la longueur du fichier de cette façon, cela va demander beaucoup de
new FileInfo
appels (un par l'écriture). Le plus probable de la classe de l'OP est l'aide à écrire dans le fichier a une certaine façon de faire le suivi de la taille, si c'est unFileStream
, par exemple, utiliser lePosition
de la propriété.Je sais, c'est juste pour donner l'idée principale, il doit être adapté.
OriginalL'auteur Arnaud F.
Peut-être que ce serait la solution la plus simple:
OriginalL'auteur Jason Cidras
Si vous n'avez pas envie de garder le contenu, ou les déplacer dans une filiale de fichier qui suit la mise à jour pour le cycle (que ce soit en journée ou quelques autres de la longueur du cycle), je vous recommande juste de réécrire le fichier à l'aide de cette méthode simple:
Si, d'autre part, vous voulez sauvegarder le contenu d'un fichier pour la date à laquelle ils ont été tronqués, vous pouvez utiliser la méthode suivante en liaison avec ce qui précède:
De toute façon, vous pouvez utiliser la méthode de votre choix avec le bloc suivant:
J'espère que cela aide les futurs lecteurs.
Merci,
C§
OriginalL'auteur CSS