Wie Sie abschneiden-eine Datei in c#?
Schreibe ich Aktionen getan durch das Programm in C# in eine Datei mit Hilfe von Trace.Writeln () - Funktion. Aber die Datei ist immer zu groß. Wie kürzen Sie diese Datei, wenn es wächst auf 1 MB?
TextWriterTraceListener traceListener = new TextWriterTraceListener(File.AppendText("audit.txt"));
Trace.Listeners.Add(traceListener);
Trace.AutoFlush = true;
Was sollte Hinzugefügt werden, um die oben genannten block
Sie sollten angeben, welchen Teil(en) des Protokolls, die Sie behalten möchten.
InformationsquelleAutor user186246 | 2011-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen zu spielen, um mit FileStream.SetLength
FileStream
dies ist die einfachste Lösung, mitSetLength(0)
.Nach beenden des Prozesses, wenn ich neu einen neuen Prozess, dann wird der obige code append wird der text an die bestehende Datei?
Wenn Sie
SetLength(0)
auf eine aktiveFileStream
, dass abgeschnitten wird die zugrunde liegende Datei.Wir beachten, dass die FileStream.SetLength mit einem nicht-null-Länge ist eine sehr schlechte Idee für eine log-Datei, aber ich fand diese Frage mit einem angemessenen Fall, dass dies die richtige Lösung.
InformationsquelleAutor sll
Schließen Sie die Datei und öffnen Sie es dann erneut mit FileMode.Abschneiden.
Protokoll-Implementierungen Archiv die alte Datei unter einem alten Namen vor der Wiedereröffnung, zur Erhaltung einer größeren Anzahl von Daten ohne jede Datei immer zu groß.
InformationsquelleAutor Steve Townsend
Im Gegensatz zu versuchen, dies selbst zu tun, würde ich wirklich empfehlen so etwas wie log4net; es hat eine Menge von dieser Art von nützlichen Funktionen eingebaut.
Ich glaube nicht, dass es eine unangemessene Antwort auf eine Frage zu Antworten, dass die OP ' s angegebenen Methode zeigt einige Ineffizienzen, und schlagen Sie eine Alternative Methode.
Gute Antworten anzeigen-code oder link, um die spezifische Funktion zu verwenden. Wenn Sie wollen, dass dies eine gute Antwort, welche die Verwendung von log4net zu tun, was der OP fordert.
InformationsquelleAutor Paul Sonier
Wenn die Datei über 500000 bytes, wird es den Anfang geschnitten 250000 bytes aus der Datei, so dass die Verbleibende Datei wird von 250000 bytes lang.
InformationsquelleAutor Steve
Dadurch:
1000000
... denken Sie1 kbyte = 1024 bytes
, und das gleiche gilt fürmb
Ich persönlich würde nicht überprüfen Sie die Länge der Datei auf diese Weise, es wird zu viel verlangen
new FileInfo
Anrufe (eine pro schreiben). Wahrscheinlich die Klasse die OP ist mit schreiben auf die Datei hat einige Weg, um die Größe, wenn es einFileStream
zum Beispiel verwenden diePosition
Eigenschaft.Ich weiß, es ist nur der Grundgedanke, es muss angepasst werden.
InformationsquelleAutor Arnaud F.
Vielleicht wäre die Lösung einfach:
InformationsquelleAutor Jason Cidras
Wenn Sie keine Lust haben zu halten, die Inhalte oder verschieben Sie Sie in eine Tochtergesellschaft-Datei, die tracks, das update für den Zyklus (ob bei Tag oder einige andere Zyklus-Länge), ich würde empfehlen, nur das umschreiben der Datei mit dieser einfachen Methode:
Wenn auf der anderen Seite, werden Sie wollen, speichern Sie den Inhalt in eine Datei für das Datum, Sie wurden abgeschnitten, können Sie mithilfe der folgenden Methode in Verbindung mit der oben:
Entweder Weg, Sie können nutzen Sie die Methode Ihrer Wahl mit dem folgenden block:
Ich hoffe das hilft zukünftigen Lesern.
Dank,
C§
InformationsquelleAutor CSS