• 把对象序列化到文件中和从文件中反序列化的管理类


     /// <summary>
        
    /// 用于通用的加载或保存 Xml 序列化配置文件的类,该类通常适用于使用结构来保存配置数据的程序,例如数据源配置。
        
    /// </summary>
        
    /// <typeparam name="T">类型必须为可序列化的类,并且要实现 CollectBase 类,以及一个通用的索引器。</typeparam>
        
    /// <example>
        
    /// 把一个 DataTable 对象序列化到文件中。
        
    /// DataTable table = ..
        
    /// XmlConfigProvider<DataTable> cp = new XmlConfigProvider<DataTable>("test.txt");
        
    /// cp.SetConfig(dt);
        
    /// </example>
        public class XmlConfigProvider<T>
        {
            
    private string filename = string.Empty;

            
    public XmlConfigProvider(string filename)
            {
                
    //如果目录不存在则创建这个目录。
                string fullPath = Path.GetFullPath(filename);
                FileInfo fileInfo 
    = new FileInfo(fullPath);
                DirectoryInfo directoryInfo 
    = new DirectoryInfo(fileInfo.DirectoryName);
                
    if (!directoryInfo.Exists) directoryInfo.Create();
                
    this.filename = fullPath;
            }

            
    /// <summary>
            
    /// 从文件中获取结构集合。
            
    /// </summary>
            
    /// <returns>返回在创建该类时使用的泛型结构或类。</returns>
            public T GetConfig()
            {
                
    //如果文件不存在,则返回一个空的集合。
                T t;
                
    if (!File.Exists(filename))
                {
                    SetConfig(
    default(T));
                    
    return GetConfig();
                }

                XmlSerializer ser 
    = new XmlSerializer(typeof(T));
                TextReader reader 
    = new StreamReader(filename);
                t 
    = (T)ser.Deserialize(reader);
                reader.Close();

                SetConfig(t);
                
    return t;
            }

            
    /// <summary>
            
    /// 向文件中写入结构集合。
            
    /// </summary>
            
    /// <param name="t">要写入文件中的泛型结构或类</param>
            public void SetConfig(T t)
            {
                XmlSerializer serializerObj 
    = new XmlSerializer(typeof(T));
                TextWriter writer 
    = new StreamWriter(filename);
                serializerObj.Serialize(writer, t);
                writer.Close();
            }

            
    /// <summary>
            
    /// 文件名。
            
    /// </summary>
            public string FileName
            {
                
    get { return filename; }
                
    set { filename = value; }
            }
        }
  • 相关阅读:
    Servlet(JSP)中动态生成JPG PNG透明 水印图像
    THML IFRAME框架 各个子页面间操作
    JAVA时间处理和格式化
    ACM母函数详解 整数划分详解 java
    java中的Java5.0 的注释 (Annotation)、多线程包2(J2SE入门26)
    java中的String为什么可以使用==比较字符串内容?
    深入biztalk中sql adapter
    biztalk中消息的Property fields和Distinguished fields
    深入biztalk中Delivery Notification和ACK、NACK机制
    深入biztalk中各种端口绑定方式(一) 背景知识订阅机制
  • 原文地址:https://www.cnblogs.com/xiefang2008/p/1439194.html
Copyright © 2020-2023  润新知