代码函数:
#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>
分享到:
相关推荐
C# 递归遍历多层目录并将目录信息写入XML 代码简单为控制台代码不涉及窗口
c#递归遍历xml菜单
C# 用递归的方式查找指定文件夹下的所有子目录,C#代码 采用递归的方法來查找指定文件夹及它的所有子文件夹裏的内容。
C#递归C#递归C#递归C#递归C#递归C#递归C#递归C#递归C#递归
C# FTP递归下载文件(子目录和子目录中的文件 服务器使用的Serv-u软件 Visual Studio 2008专业版编译 Winfrom 实例,修改FTP连接信息即可编译使用
用c# 递归方法,遍历目录,输入一个路径,能输出此路径下的全部文件和文件夹里的内容
C# winform TreeView递归文件夹
C# 递归生成树型菜单,源码中包含了数据库,可直接可运行程序,代码有注释,易懂
用递归实现C#树形结构 ,用递归实现C#树形结构 ,
本文实例讲述了c#递归生成XML的方法。分享给大家供大家参考。具体实现方法如下: 这里结合网上搜到的资料,写了个递归生成xml,经过调试可以使用,数据库结构如下图所示: 代码如下: 代码如下:using System; ...
使用递归生成文件目录树 .txt 使用递归生成文件目录树 .txt
C#使用递归算法,生成并画树形状的图形。详细介绍请到博客中看看
采用递归的方式读取xml文件,并将生成数据项保存在数据库中
C#,用递归方法实现读取文件夹下所有文件信息!
有关c#使用递归方法调用,查询出指定目录下的所有文件夹、文件。并用Listview和ComboBox来显示出来。 注释很清晰.....
c#递归树自动树 添加父子节点等等操作全部包涵
C# 采用递归的方式实现zTree,满足用户添加多级子菜单
利用递归方式遍历XML文件 利用递归方式遍历XML文件 利用递归方式遍历XML文件
一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子一个递归删除指定目录和文件的例子
递归实现遍历目录下子所有目录内所有文件