Windows runtime 将较短的流写入存储文件
我有一个包含XML的存储文件。我从存储文件中读取XML,然后编辑它,然后使用以下代码再次将其保存到存储文件中:Windows runtime 将较短的流写入存储文件,windows-runtime,xml-serialization,storagefile,Windows Runtime,Xml Serialization,Storagefile,我有一个包含XML的存储文件。我从存储文件中读取XML,然后编辑它,然后使用以下代码再次将其保存到存储文件中: using (var writeStream = await storageFile.OpenStreamForWriteAsync()) { xDocument.Save(writeStream, SaveOptions.None); } 然而,当我把内容缩短时(如从 <Node> <Child>This is a verrrrrryyy l
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>rrryyy long text</Child>
<Node>
这是短的
rrryyy长文本
显然,流只在文件中写入新字节,而保留旧字节不变,因此在我下次尝试打开它时会导致无效的XML,因此这可能不是正确的保存方式
我应该如何保存它?解决方案是截断流:
使用(var writeStream=wait f.OpenStreamForWriteAsync())
{
if(writeStream.CanSeek&&writeStream.Length>0)
writeStream.SetLength(0);
_Save(writeStream、SaveOptions.None);
}
读取数据时是否对其进行反序列化?读取存储文件时进行编码:XmlDocument XmlDocument=wait XmlDocument.LoadFromFileAsync(存储文件)
XDocument XDocument=XDocument.Parse(xmlDocument.GetXml())代码>我建议您在下面的链接中研究序列化和反序列化:-我没有遇到任何像您这样的问题。谢谢您的提示,但我不是在读/写一个可序列化的类,只是一个xml。关于如何在该场景中保存它的任何线索?解决方案是截断流:使用(var writeStream=wait f.OpenStreamForWriteAsync()){if(writeStream.CanSeek&&writeStream.Length>0)writeStream.SetLength(0);\u xml.save(writeStream,SaveOptions.None)}
<Node>
<Child>This is short</Child>
<Node>rrryyy long text</Child>
<Node>