C# XmlDocument.Save & Bitmap.Save 真正写入数据到磁盘了吗?
在开发过程中,有如下2个文件操作经常发生。
1. 使用 System.Xml.XmlDocument 保存xml文件,通常我们使用如下方法。
public virtual void Save(string filename);
问题:这种保存xml文件的方法遇到断电情况,有很大可能保存的xml文件会是一个空白。
解决办法1:使用 Save(Stream outStream) & stream.Flush(true) ,参考代码如下:
using (FileStream fs = new FileStream(fileName, FileMode.Create, FileAccess.Write)) { xmldoc.Save(fs); fs.Flush(true); }
解决方法2:为XmlDocument新增一个扩展方法 Save(string filename, bool flushToDisk)。
/// <summary> /// XmlDocument扩展方法类 /// </summary> static class XmlDocumentExtension { /// <summary> /// 保存到文件 /// </summary> /// <param name="xmlDoc"></param> /// <param name="filename"></param> /// <param name="flushToDisk">设为true,立刻写入磁盘</param> public static void Save(this System.Xml.XmlDocument xmlDoc, string filename, bool flushToDisk) { using (FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write)) { xmlDoc.Save(fs); fs.Flush(flushToDisk); } } }
2. 使用 System.Drawing.Bitmap 保存图片, 通常我们使用如下方法。
public void Save(string filename, ImageFormat format);
问题:这种保存图片的方法遇到断电情况,有很大可能保存的图片会是一个空白。
解决办法:使用 Save(Stream stream, ImageFormat format) & stream.Flush(true) ,参考代码如下:
using (FileStream fs = new FileStream(filename, FileMode.Create, FileAccess.Write)) { bitmap.Save(fs, format); fs.Flush(true); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· AI Agent开发,如何调用三方的API Function,是通过提示词来发起调用的吗