`
xqf222
  • 浏览: 116150 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics