将更短的流写入StorageFile

时间:2012-11-19 13:15:38

标签: xml-serialization storagefile

我有一个包含XML的StorageFile。我从StorageFile读取XML,然后编辑它,然后使用以下代码将其再次保存到StorageFile:

using (var writeStream = await storageFile.OpenStreamForWriteAsync())
{
    xDocument.Save(writeStream, SaveOptions.None);
}

但是,当我缩短内容时,例如来自

<Node>
    <Child>This is a verrrrrryyy long text</Child>
<Node>

<Node>
    <Child>This is short</Child>
<Node>

磁盘上的结果如下:

<Node>
    <Child>This is short</Child>
<Node>rrryyy long text</Child>
<Node>

显然,Stream只写入文件中的新字节,保留旧字节,从而导致下次尝试打开时无效的XML,因此这可能不是保存的正确方法...... / p>

我应该如何保存它?

1 个答案:

答案 0 :(得分:0)

解决方案是截断流:using(var writeStream = await f.OpenStreamForWriteAsync()){if(writeStream.CanSeek&amp;&amp; writeStream.Length&gt; 0)writeStream.SetLength(0); _xml.Save(writeStream,SaveOptions.None); }