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


     /// <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; }
            }
        }
  • 相关阅读:
    GTP (GPRS隧道协议(GPRSTunnellingProtocol))
    dns (域名系统)
    WSP (无线会话协议)
    http 超文本传输协议
    SSN 社会安全号码
    MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)
    dns
    C/C++中的预编译指令
    strstr 函数用法
    转Hibernate Annotation mappedBy注解理解
  • 原文地址:https://www.cnblogs.com/xiefang2008/p/1439194.html
Copyright © 2020-2023  润新知