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>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值