FileStream和StreamWriter - 如何在写入后截断文件的其余部分?

Nat*_*ley 18 .net io filestream streamwriter

var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
    writer.Write(....);
Run Code Online (Sandbox Code Playgroud)

如果文件以前包含文本并且新写入的文本比文件中已有的文本短,那么如何确保文件中过时的尾随内容被截断?

请注意,在这种情况下,以截断模式打开文件不是一个选项.收到FileStream对象时文件已经打开.上面的代码只是为了说明流的属性.

编辑

扩展下面的答案,解决方案是:

var fs = new FileStream(filePath, FileMode.OpenOrCreate, FileAccess.ReadWrite);
using(var writer = new StreamWriter(fs))
{
    writer.Write(....);
    writer.Flush();
    fs.SetLength(fs.Position);
}
Run Code Online (Sandbox Code Playgroud)

Ode*_*ded 15

使用SetLength设置文件的新长度-文件应该会被截断.

查看相关问题的答案.