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 に答える