Ror*_*ory 9 .net c# text-files
我有一个文本文件随着时间的推移附加,并定期我想将其截断到一定的大小,例如10MB,但保留最后10MB而不是第一个.
有没有聪明的方法来做到这一点?我猜我应该寻找正确的点,从那里读到一个新文件,删除旧文件并将新文件重命名为旧名称.有更好的想法或示例代码吗?理想情况下,我不会将整个文件读入内存,因为文件可能很大.
请不要使用Log4Net等建议
如果您可以将最后 10MB 读入内存,那么这应该可以工作:
using(MemoryStream ms = new MemoryStream(10 * 1024 * 1024)) {
using(FileStream s = new FileStream("yourFile.txt", FileMode.Open, FileAccess.ReadWrite)) {
s.Seek(-10 * 1024 * 1024, SeekOrigin.End);
s.CopyTo(ms);
s.SetLength(10 * 1024 * 1024);
s.Position = 0;
ms.Position = 0; // Begin from the start of the memory stream
ms.CopyTo(s);
}
}
Run Code Online (Sandbox Code Playgroud)