电脑断电,XML文件损坏

Allblus 2017-05-26 01:56:50
在电脑突然断电,我的程序中断后,怎么我通过Copy函数复制的文件都会损坏呢?OK.xml跟OKBak.xml 都损坏了,电脑断电时并不一定在执行下面这个复制文件的语句,几乎每次断电这个文件都会损坏,为什么?


XElement doc = XElement.Load(Application.StartupPath + "\\Buffer\\OK.xml");//把OK文件的xml读出来
XElement b = new XElement("BatteryItem",
new XElement("ID", bi.id),
new XElement("Barcode", bi.barcode),
new XElement("Press", bi.press),
new XElement("Temperature1", bi.temperature1),
new XElement("Temperature2", bi.temperature2),
new XElement("Vacuum", bi.vacuum)
);//把bi转化为xml形式的子元素
doc.Add(b);//b加入自动xml元素中
doc.Save(Path.Combine(Application.StartupPath,"\\Buffer\\OK.xml"));//将数据写入指定的文件中并且覆盖
File.Copy(Application.StartupPath + "\\Buffer\\OK.xml", Application.StartupPath + "\\Buffer\\OKBak.xml", true);


损坏的文件这样子,都变成空格了。

...全文
1203 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
htxxxxxx 2020-06-24
  • 打赏
  • 举报
回复
这么久了 楼主找到问题原因以及解决方法了吗
卢庆华 2018-08-08
  • 打赏
  • 举报
回复
过去快一年了,不知道楼主的问题解决了没。近期做项目也遇到了相似的问题,使用XML序列化和反序列化的类XmlSerializer来实现类的存储和加载,在设备突然掉电再重新上电后发现出现了和楼主一样的文件损坏现象,而且损坏的都是XML格式的文件,其他的文件(.bin 和 .ini)没有损坏的现象,而且序列化(存储)比反序列化(加载)损坏的概率高,每次突然掉电不一定损坏哪一个XML文件,也有可能都不损坏。
k475750566 2017-10-12
  • 打赏
  • 举报
回复
解决了吗,同求答案
东风白 2017-05-27
  • 打赏
  • 举报
回复
是不是先保存后备份了?可以先备份再保存试试
水哥阿乐 2017-05-27
  • 打赏
  • 举报
回复
都损坏了找恢复人员吧,再纠结下去也是浪费时间
Allblus 2017-05-26
  • 打赏
  • 举报
回复
对于这个 File.Copy(Application.StartupPath + "\\Buffer\\OK.xml", Application.StartupPath + "\\Buffer\\OKBak.xml", true); MSDN提示用Path.Combine安全些,为什么要用Path.Combine不直接用加号?
Allblus 2017-05-26
  • 打赏
  • 举报
回复
File.Copy 执行后还需要关闭文件吗? 我这个OKBak.xml 文件就是复制来备份用的,也会损坏。
xian_wwq 2017-05-26
  • 打赏
  • 举报
回复
是不是文件一直在打开状态? 如果这样,那么掉电时肯定会损坏 如果文件操作数据量不大,用完关闭文件就可以; 如果数据量较大,那么最好增加定期备份策略。
  • 打赏
  • 举报
回复
你这个复制特别频繁吧,导致断电时很大概率正在复制?
绿领巾童鞋 2017-05-26
  • 打赏
  • 举报
回复
你是不是 每次读文件和写文件 后 都没有关闭文件操作 而导致 文件一直被程序占用的情况? 如果不想改代码,让公司给你配一台UPS ~

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧