1

我有一个包含 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 无效,所以这可能不是正确的保存方式......

我应该如何保存它?

4

1 回答 1

0

解决方案是截断流:

using (var writeStream = await f.OpenStreamForWriteAsync()) 
{ 
   if (writeStream.CanSeek && writeStream.Length > 0) 
      writeStream.SetLength(0); 
   _xml.Save(writeStream, SaveOptions.None); 
}
于 2014-12-27T20:54:41.643 回答