zoukankan      html  css  js  c++  java
  • C#递归获取所有目录下的文件信息并生成对应的XML件

     代码函数:      

            #region C#递归获取所有目录下的文件信息并生成对应的XML件
            /// <summary>
            /// C#递归获取所有目录下的文件信息并生成对应的XML件
            /// </summary>
            /// <param name="xmlDoc">XML文档对象</param>
            /// <param name="strServerFileFolder">文件存放根目录</param>
            /// <param name="strFileExtention">文件后缀名</param>
            /// <returns></returns>
            public bool CreateAllUpdateFilesXml(XmlDocument xmlDoc, string strServerFileFolder, string strFileExtention)
            {
                try
                {

                    DirectoryInfo dir = new DirectoryInfo(strServerFileFolder);
                    //判断目录下是否存在文件,如果有则循环读取文件相关信息
                    FileInfo[] finfo = dir.GetFiles("*" + strFileExtention);

                    if (finfo.Length > 0)
                    {
                        int i = 0;
                        foreach (FileInfo f in finfo)
                        {
                            try
                            {
                                FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(f.FullName);


                                XmlNode root = xmlDoc.SelectSingleNode("Update");//查找<Update>
                                //创建节点(二级)

                                XmlNode node = xmlDoc.CreateElement("Soft");//创建一个<Soft>节点
                                node.AppendChild(AppendNewNode(xmlDoc, node, "Name", f.Name));
                                node.AppendChild(AppendNewNode(xmlDoc, node, "LastWriteTime", f.LastWriteTime.ToString()));
                                node.AppendChild(AppendNewNode(xmlDoc, node, "DownLoad", f.FullName));
                                node.AppendChild(AppendNewNode(xmlDoc, node, "Version", myFileVersionInfo.FileVersion));
                                root.AppendChild(node);
                                i = i + 1;
                            }
                            catch
                            {
                                Console.WriteLine("获取文件版本失败,文件路径:" + f.FullName);
                            }
                        }

                    }
                    //判断目录下是否存在子目录,如果有则递归查询
                    DirectoryInfo[] dinfo = dir.GetDirectories("*");
                    if (dinfo.Length > 0)
                    {
                        foreach (DirectoryInfo d in dinfo)
                        {
                            CreateAllUpdateFilesXml(xmlDoc, d.FullName, strFileExtention);
                        }
                    }
                    return true;
                }
                catch (Exception ex)
                {
                    Console.Write(ex.ToString());
                    return false;
                }
            }

            /// <summary>
            /// 在当前节点的所有字节点的末尾添加一个新的字节点
            /// </summary>
            /// <param name="Doc">节点所在的XML文档</param>
            /// <param name="Current">待插入子节点的当前节点</param>
            /// <param name="ElemName">新增节点的名称</param>
            /// <param name="ElemText">新增节点的属性值</param>
            /// <returns>添加的新节点</returns>
            public XmlNode AppendNewNode(XmlDocument Doc, XmlNode Current, string ElemName, string ElemText)
            {
                //创建一个新节点
                XmlElement elem = Doc.CreateElement(ElemName);
                elem.InnerText = ElemText;
                //将该节点添加到当前节点的字节点末尾
                return Current.AppendChild(elem);
            }

    调用方法:

                string strFileExtention = "dll";
                string strXmlFileFolder = "C:\Program Files\Microsoft Visual Studio 9.0\VC#";  

               string strServerFileFolder = "C:\Web"

                //创建全新的XML文件
                XmlDocument xmlDoc = new XmlDocument();
                xmlDoc.Load(strXmlFileFolder + @"\ServerApp.xml");

                if (CreateAllUpdateFilesXml(xmlDoc, strServerFileFolder, strFileExtention))
                {
                    MessageBox.Show("生成成功");
                }
                else
                {
                    MessageBox.Show("生成失败");
                }

                xmlDoc.Save(strXmlFileFolder + @"\ServerApp.xml");//保存。

    //生成前的内容为C:\web\ServerApp.xml

    <?xml version="1.0" encoding="utf-8"?>
    <Update>
    </Update>

    //生成后的C:\web\ServerApp.xml内容为

    <?xml version="1.0" encoding="utf-8"?>
    <Update>
      <Soft>
        <Name>cslangsvc.dll</Name>
        <LastWriteTime>2008-7-31 16:41:02</LastWriteTime>
        <DownLoad>C:\Program Files\Microsoft Visual Studio 9.0\VC#\VCSPackages\cslangsvc.dll</DownLoad>
        <Version>9.0.30729.1 built by: SP</Version>
      </Soft>
      <Soft>
        <Name>csproj.dll</Name>
        <LastWriteTime>2008-7-31 16:41:02</LastWriteTime>
        <DownLoad>C:\Program Files\Microsoft Visual Studio 9.0\VC#\VCSPackages\csproj.dll</DownLoad>
        <Version>9.0.30729.1 built by: SP</Version>
      </Soft>
      <Soft>
        <Name>cslangsvcui.dll</Name>
        <LastWriteTime>2008-7-30 12:49:26</LastWriteTime>
        <DownLoad>C:\Program Files\Microsoft Visual Studio 9.0\VC#\VCSPackages\1033\cslangsvcui.dll</DownLoad>
        <Version>9.0.30729.1 built by: SP</Version>
      </Soft>
      <Soft>
        <Name>csprojui.dll</Name>
        <LastWriteTime>2008-7-30 12:49:26</LastWriteTime>
        <DownLoad>C:\Program Files\Microsoft Visual Studio 9.0\VC#\VCSPackages\1033\csprojui.dll</DownLoad>
        <Version>9.0.30729.1 built by: SP</Version>
      </Soft>
      <Soft>
        <Name>cslangsvcui.dll</Name>
        <LastWriteTime>2008-7-31 16:41:02</LastWriteTime>
        <DownLoad>C:\Program Files\Microsoft Visual Studio 9.0\VC#\VCSPackages\2052\cslangsvcui.dll</DownLoad>
        <Version>9.0.30729.1 built by: SP</Version>
      </Soft>
      <Soft>
        <Name>csprojui.dll</Name>
        <LastWriteTime>2008-7-31 16:41:02</LastWriteTime>
        <DownLoad>C:\Program Files\Microsoft Visual Studio 9.0\VC#\VCSPackages\2052\csprojui.dll</DownLoad>
        <Version>9.0.30729.1 built by: SP</Version>
      </Soft>
      <Soft>
        <Name>cslangsvc.dll</Name>
        <LastWriteTime>2008-7-31 16:41:02</LastWriteTime>
        <DownLoad>C:\Program Files\Microsoft Visual Studio 9.0\VC#\VCSPackages\cslangsvc.dll</DownLoad>
        <Version>9.0.30729.1 built by: SP</Version>
      </Soft>
      <Soft>
        <Name>csproj.dll</Name>
        <LastWriteTime>2008-7-31 16:41:02</LastWriteTime>
        <DownLoad>C:\Program Files\Microsoft Visual Studio 9.0\VC#\VCSPackages\csproj.dll</DownLoad>
        <Version>9.0.30729.1 built by: SP</Version>
      </Soft>
      <Soft>
        <Name>cslangsvcui.dll</Name>
        <LastWriteTime>2008-7-30 12:49:26</LastWriteTime>
        <DownLoad>C:\Program Files\Microsoft Visual Studio 9.0\VC#\VCSPackages\1033\cslangsvcui.dll</DownLoad>
        <Version>9.0.30729.1 built by: SP</Version>
      </Soft>
      <Soft>
        <Name>csprojui.dll</Name>
        <LastWriteTime>2008-7-30 12:49:26</LastWriteTime>
        <DownLoad>C:\Program Files\Microsoft Visual Studio 9.0\VC#\VCSPackages\1033\csprojui.dll</DownLoad>
        <Version>9.0.30729.1 built by: SP</Version>
      </Soft>
      <Soft>
        <Name>cslangsvcui.dll</Name>
        <LastWriteTime>2008-7-31 16:41:02</LastWriteTime>
        <DownLoad>C:\Program Files\Microsoft Visual Studio 9.0\VC#\VCSPackages\2052\cslangsvcui.dll</DownLoad>
        <Version>9.0.30729.1 built by: SP</Version>
      </Soft>
      <Soft>
        <Name>csprojui.dll</Name>
        <LastWriteTime>2008-7-31 16:41:02</LastWriteTime>
        <DownLoad>C:\Program Files\Microsoft Visual Studio 9.0\VC#\VCSPackages\2052\csprojui.dll</DownLoad>
        <Version>9.0.30729.1 built by: SP</Version>
      </Soft>
    </Update>

  • 相关阅读:
    python threading 锁的应用
    python线程threading处理任务并发一
    *,arg,*args,**kwargs的使用
    web services 接口调用
    jsonp与ajax
    无缝滚动详解
    手机端使用rem适配
    css3写的实用表单美化
    经典仿淘宝商城菜单多条件查询
    css3 flex写的移动端界面
  • 原文地址:https://www.cnblogs.com/xqf222/p/3306770.html
Copyright © 2011-2022 走看看