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);
}发布于 2011-12-11 21:29:07
你可以试试writer.BaseStream.SetLength(writer.BaseStream.Position),尽管我不确定它会有多好。
对于FileStream,我认为这应该将文件截断到当前位置。
https://stackoverflow.com/questions/8464261
复制相似问题