转:加载和保存站点值到配置文件

        // ---------------------------
        // set default values for site
        // ---------------------------
        string Host = null;
        int Port = 21;
        string Login = "";
        string Password = "";
        string UploadDir = null;
        string NoModifyDir = "/";
        int Timeout = 10000;
        bool Passive = true;
        string Proxy = null;
        bool ProxyEnabled = false;
        int ProxyPort = 3128;
        string ProxyUser = null;
        string ProxyPassword = null;
        int ProxyType = 1;
        const string CONFIGFILE = "config.xml";        // xml file consisting of settings        

        /// <summary>
        /// 从配置文件加载站点属性值
        /// </summary>
        private void LoadConfig()
        {
            // ----------------
            // read config file
            // ----------------
            DataSet ds = new DataSet();
            try
            {
                if (!File.Exists(CONFIGFILE))
                    return;
                ds.ReadXml(CONFIGFILE);
                NoModifyDir = "/";
                Timeout = 10000;
                Proxy = null;
                foreach (DataRow dr in ds.Tables[0].Rows)
                {
                    string item = dr["value"].ToString();
                    switch (dr["name"].ToString().ToLower())
                    {
                        case "host":
                            Host = item;
                            break;
                        case "login":
                            Login = item;
                            break;
                        case "port":
                            {
                                try
                                {
                                    Port = Int32.Parse(item);
                                }
                                catch
                                {
                                    Port = 21; // default
                                }
                                break;
                            }
                        case "password":
                            Password = EncodePassword(item);
                            break;
                        case "passive":
                            Passive = (item.ToLower() == "false" ? false : true);
                            break;
                        case "proxy":
                            Proxy = item;
                            break;
                        case "proxylogin":
                            ProxyUser = item;
                            break;
                        case "proxypassword":
                            ProxyPassword = EncodePassword(item);
                            break;
                        case "proxyenabled":
                            ProxyEnabled = (item.ToLower() == "false" ? false : true);
                            break;
                        case "proxyport":
                            {
                                try
                                {
                                    ProxyPort = Int32.Parse(item);
                                }
                                catch
                                {
                                    ProxyPort = 3128; // default
                                }
                                break;
                            }
                        case "proxytype":
                            {
                                try
                                {
                                    ProxyType = Int32.Parse(item);
                                }
                                catch
                                {
                                    ProxyType = 1; // default
                                }
                                break;
                            }
                    }
                }
            }
            catch
            {
                Console.WriteLine("* config file read error");
            }
        }

        /// <summary>
        /// encoded/normal texts transfer to normal/encoded ones
        /// </summary>
        /// <param name="password">encoded/normal text</param>
        /// <returns></returns>
        private string EncodePassword(string password)
        {
            const byte MAGICNUMBER = 42; // XOR value for password encoded/decode process
            string encodedString = "";
            foreach (char signs in password)
            {
                char sign = (char)(signs ^ MAGICNUMBER);
                encodedString += sign.ToString();
            }
            return encodedString;
        }

        /// <summary>
        /// 保存站点值到配置文件
        /// </summary>
        private void SaveConfig()
        {
            DataSet ds = new DataSet("configuration");
            try
            {
                ds.Tables.Add("key");
                ds.Tables[0].Columns.Add("name");
                ds.Tables[0].Columns.Add("value");
                DataRow[] dr = new DataRow[11];
                dr[0] = ds.Tables[0].NewRow();
                dr[1] = ds.Tables[0].NewRow();
                dr[2] = ds.Tables[0].NewRow();
                dr[3] = ds.Tables[0].NewRow();
                dr[4] = ds.Tables[0].NewRow();
                dr[5] = ds.Tables[0].NewRow();
                dr[6] = ds.Tables[0].NewRow();
                dr[7] = ds.Tables[0].NewRow();
                dr[8] = ds.Tables[0].NewRow();
                dr[9] = ds.Tables[0].NewRow();
                dr[10] = ds.Tables[0].NewRow();
                ds.Tables[0].Clear();
                dr[0]["name"] = "host";
                dr[0]["value"] = Host;
                dr[1]["name"] = "login";
                dr[1]["value"] = Login;
                dr[2]["name"] = "port";
                dr[2]["value"] = Port;
                dr[3]["name"] = "password";
                dr[3]["value"] = EncodePassword(Password);
                dr[4]["name"] = "passive";
                dr[4]["value"] = Passive;
                dr[5]["name"] = "proxyenabled";
                dr[5]["value"] = ProxyEnabled;
                dr[6]["name"] = "proxy";
                dr[6]["value"] = Proxy;
                dr[7]["name"] = "proxyport";
                dr[7]["value"] = ProxyPort;
                dr[8]["name"] = "proxytype";
                dr[8]["value"] = ProxyType;
                dr[9]["name"] = "proxylogin";
                dr[9]["value"] = ProxyUser;
                dr[10]["name"] = "proxypassword";
                dr[10]["value"] = ProxyPassword;
                ds.Tables[0].Rows.Add(dr[0]);
                ds.Tables[0].Rows.Add(dr[1]);
                ds.Tables[0].Rows.Add(dr[2]);
                ds.Tables[0].Rows.Add(dr[3]);
                ds.Tables[0].Rows.Add(dr[4]);
                ds.Tables[0].Rows.Add(dr[5]);
                ds.Tables[0].Rows.Add(dr[6]);
                ds.Tables[0].Rows.Add(dr[7]);
                ds.Tables[0].Rows.Add(dr[8]);
                ds.Tables[0].Rows.Add(dr[9]);
                ds.Tables[0].Rows.Add(dr[10]);
                ds.WriteXml(CONFIGFILE, XmlWriteMode.IgnoreSchema);
            }
            catch
            {
                Console.WriteLine("* config file not saved");
            }
        }
原文地址:https://www.cnblogs.com/lusunqing/p/3150782.html