html保存时出现nul,c# – 有时保存的文件只包含NUL字符

我们的

Windows 8.1应用程序(WinRT)中存在一个问题,即有时我们保存的文件已损坏.这些文件的文件大小正确,但该文件只包含NUL字符.该文件应包含一个序列化对象作为XML.

为了找到问题,我们不会覆盖该文件,我们执行以下操作:

>将当前对象序列化为临时文件.

>检查临时文件的内容

>复制当前文件(到.timestamp.xml.bak)

>将临时文件移动/替换为当前文件

大多数情况下,一切正常,但有时.timestamp.xml.bak文件和内容文件损坏.除此之外,日志文件也会损坏(也只有NUL字符).整个文件由NUL字符组成.当我查看bak文件和主文件的踪迹时,我看到主文件的大小增加了.这应该是正确的,因为添加了一个新的XML元素.但它不包含XML.

我不知道这是怎么发生以及为什么会发生这种情况.它发生在大约5%的文件中,应该进行编辑,每个损坏的文件在5-20次保存尝试后发生.它也发生在几个平板电脑上.

以下是创建损坏文件的代码片段:

StorageFile file = await lDataFld.CreateFileAsync(filename + ".tmp", CreationCollisionOption.OpenIfExists);

StorageFile oldFile = await dataFld.GetFileAsync(filename + ".xml");

if (oldFile != null)

{

await oldFile.CopyAsync(dataFld, string.Format("{0}.{1}.xml.bak", filename, DateTime.Now.ToString("yyyyMMddHHmmssfffffff")), NameCollisionOption.ReplaceExisting);

}

await file.MoveAndReplaceAsync(await dataFld.GetFileAsync(filename + ".xml"));

Logger.Log(string.Format("Saved {0}.", filename));

有人能告诉我我们如何最终得到只包含NUL字符的文件以及如何/为什么会发生这种情况?甚至可以更好地修复它.

一个小小的愿望:

我们不能以任何方式重现这个问题,它只发生在我们的生产环境中.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值