DOA项目经验总结(App.config文件的修改)

有一个需求:当管理员登录时,可以对上传文件目录的修改,它的那个文件上传路径已经放到配置文件

 

App.config文件中了,如下代码:

  <appSettings>

    <add key="Version" value="1.0.0" />

    <add key="FileUploadPath" value="//192.168.0.103/UploadFolder/aaa32000)" />

  </appSettings>

也就是说我要修改xml文件的节点值,

首先我们要找到文件App.config文件如下代码:

string filePath = new DirectoryInfo(Application.StartupPath).Parent.Parent.FullName + 

 

"//App.Config";

然后再找到文件中要修改的节点,如下代码初始化路径文本框的文本

 private void initFilePath()

        {

            //建立一个XmlDocument对象

            XmlDocument webconfigDoc = new XmlDocument();

 

            //找到节点的xml路径                        

            string xPath = "/configuration/appSettings/add[@key='FileUploadPath']";

 

            //加载web.config文件

            webconfigDoc.Load(filePath);

 

            ////读出路径放到txtfilepath文本框中

            XmlNode passkey = webconfigDoc.SelectSingleNode(xPath);

            string filepathtxt = passkey.Attributes["value"].InnerText.Replace

 

("//192.168.0.103//","");

            this.txtFilePath.Text=filepathtxt;

        }

然后我们对“保存”按钮写事件

   private void btnSave_Click(object sender, EventArgs e)

        {

            try

            {

                XmlDocument webconfigDoc = new XmlDocument();

                //设置节的xml路径                        

                string xPath = "/configuration/appSettings/add[@key='FileUploadPath']";

 

                //加载web.config文件

                webconfigDoc.Load(filePath);

               //找到要修改的节点

                XmlNode passkey = webconfigDoc.SelectSingleNode(xPath);

//判断字符串路径合法性的正则表达式。

                string expre = @"^(//[^///:*?""<>|]+)+//?$";

                if (ExecuteValidator(txtFilePath.Text.Trim(), expre))

                {

                    DirectoryInfo dir = new DirectoryInfo(txtFilePath.Text.Trim().Replace

 

("////","//"));

 

                    //设置节点的值

                    passkey.Attributes["value"].InnerText = "//" + "//192.168.0.103" + dir;

 

                    //创建目录

                    if (Directory.Exists("//" + "//192.168.0.103" + dir))

                    {

 

                    }

                    else

                    {

                        Directory.CreateDirectory("//" + 

 

"//192.168.0.103"+txtFilePath.Text);

                    }

 

                    //保存设置

                    webconfigDoc.Save(filePath);

                    MessageBox.Show("保存成功");

 

                }

                else

                {

                    MessageBox.Show("格式不正确,格式应为:////server//share");

                }

            }

            catch (Exception ee)

            {

                MessageBox.Show("保存不成功,"+ee.Message);

            }

        }

 

      public bool ExecuteValidator(string str, string Expression)

        {

            try

            {

                Regex r = new Regex(Expression);//创建正则表达式。

                return r.Match(str).Success;//进行验证。

            }

            catch 

            {

                return false;

            }

        }

总结:这个需求没有什么技术难点,其中有一个隐含的东西就是当我写的路径不存在时,它也能修改配

 

置文件,但是事实这个目录是不存在的,那样会导致程序出错,也就是说我们还要对你写的路径,进行

 

创建目录,这样的话就能满足客户的需求,不用到时候还要手动去硬盘上建一个目录。

还有一个要注意的地方就是我们是在文本框中写字符串路径,它的合法性我们也要验证,用

 

DirectoryInfor类时,它能验证一些特殊字符如:“<”,“?”,“*”等等,但aa////bbb能通过,这

 

样用户体验就不是特别好了,所以我们写了一个正则表达式来验证文本字符串路径的合法性,这样才能

 

达到用户体验好的效果。

我们代码不一定是优化的,我希望更多的人来优化一下代码,共同进步嘛。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章