这段代码应该是相当不言自明的:
XDocument xd = ....
using (FileStream fs = new FileStream("test.txt", FileMode.Open, FileAccess.ReadWrite))
{
using (TextWriter tw = new StreamWriter(fs))
{
xd.Save(tw);
}
fs.Flush();
fs.SetLength(fs.Position);
}
我想使用 TextWriter
将我的 XDocument
序列化为流,然后在流结束后截断该流。不幸的是,Save()
操作似乎关闭了流,因此我的 Flush()
调用生成了异常。
在现实世界中,我实际上并不是序列化到文件,而是序列化到我无法控制的其他类型的流,因此这并不像先删除文件那么简单。
最佳答案
如果你想刷新流,你需要这样做
using (FileStream fs = new FileStream("test.txt", FileMode.Open, FileAccess.ReadWrite))
{
using (TextWriter tw = new StreamWriter(fs))
{
tw.Flush();
xd.Save(tw);
fs.SetLength(fs.Position);
}
}
关于c# - 使用 TextWriter 时如何截断流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14629429/