var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
writer.Write(....);
字符串
如果文件以前包含文本,而新写入的文本比文件中已有的文本短,如何确保文件中过时的尾随内容被截断?
请注意,在这种情况下,不能以截断模式打开文件。当我收到FileStream
对象时,文件已经打开。上面的代码只是为了说明流的属性。
编辑
扩展下面的答案,解决方案是:
var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
{
writer.Write(....);
writer.Flush();
fs.SetLength(fs.Position);
}
型
3条答案
按热度按时间crcmnpdw1#
使用
SetLength
设置文件的新长度-文件应该被截断。请参阅此相关问题的答案。
6mzjoqzu2#
你可以试试
writer.BaseStream.SetLength(writer.BaseStream.Position)
,虽然我不确定它会有多好。对于FileStream,我认为应该将文件截断到当前位置。
flmtquvp3#
如果日志文件超过1MB,此代码将截断部分日志文件。
字符串