如果文本日志文件的大小超过max:
,我想清理一些文本日志文件FileInfo f = new FileInfo(filename);
if (f.Length > 30*1024*1024)
{
var lines = File.ReadLines(filename).Skip(10000);
File.WriteAllLines(filename, lines);
}
但我有例外
System.IO.IOException: The process cannot access the file '<path>' because it is being used by another process.
问题:
答案 0 :(得分:3)
File.ReadLines
保持文件处于打开状态,直到您丢弃返回的IEnumerable<string>
。
所以这与FileInfo
无关。
如果需要将其写回同一文件,请完全枚举内容:
var lines = File.ReadLines(filename).Skip(10000).ToList();
你提到&#34;旋转日志&#34;,您是否考虑过旋转文件?即。写入一个固定的文件,当它得到“#34; full&#34; (根据您认为完整的标准,例如1GB大小,一天的日志条目,100,000行等),您重命名该文件并创建一个新的空文件。
您可能还想重命名现有的旋转文件,以便保持旋转文件的数量较少。