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>

 

posted on 2011-10-11 20:32  风灵溪清  阅读(403)  评论(0编辑  收藏  举报

导航