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);
}

 

posted @ 2024-09-05 10:42  Old  阅读(9)  评论(0编辑  收藏  举报