gpt4 book ai didi

c# - 如何将文件截断到一定大小但保留结尾部分?

转载 作者:太空狗 更新时间:2023-10-29 17:46:53 24 4
gpt4 key购买 nike

我有一个随时间附加的文本文件,我想定期将其截断为特定大小,例如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);
}
}

关于c# - 如何将文件截断到一定大小但保留结尾部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11072473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com