c# 根据XML递归还原路径
来源:互联网 发布:按摩垫推荐 知乎 编辑:程序博客网 时间:2024/06/06 16:50
可以根据XML恢复目录至指定地点 创建的文件为空
xml如下
<?xml version="1.0" encoding="utf-8"?><directory_root directory_fullname="C:\Users\nhuang\Documents\学习资料"> <folder name="图书资料" directory_modify_time="2016/8/17 8:13:22"> <file name="C#高级编程(第7版).pdf" file_modify_time="2011/11/6 18:45:28">70b7d7f2d61ddaa4019ce9b89cbd4eb6</file> <file name="CLR via C# 第4版.pdf" file_modify_time="2016/8/15 17:24:00">b893e5a6d0196472a97a5d131c36546b</file> </folder> <folder name="视频资料" directory_modify_time="2016/8/18 13:15:21"> <folder name="New folder" directory_modify_time="2016/8/18 13:15:29"> <file name="New Text Document.txt" file_modify_time="2016/8/18 15:01:15">no access</file> </folder> <file name="IT行为规范.wmv" file_modify_time="2016/8/15 16:24:46">f6b7bd84ee5cb046efc84e1ede45292c</file> <file name="邮件书写规范.wmv" file_modify_time="2016/8/16 10:15:06">bab1502343ac95f1ecfe9b95d13889c0</file> </folder> <file name="c#中级培训 WFC.pptx" file_modify_time="2016/8/18 10:59:32">d41d8cd98f00b204e9800998ecf8427e</file> <file name="c#中级培训 异常处理.pptx" file_modify_time="2016/8/18 10:59:32">d41d8cd98f00b204e9800998ecf8427e</file> <file name="c#初级培训 IO与XML.pptx" file_modify_time="2016/8/18 10:59:32">d41d8cd98f00b204e9800998ecf8427e</file> <file name="c#初级培训 数据库编程.pptx" file_modify_time="2016/8/18 10:59:32">d41d8cd98f00b204e9800998ecf8427e</file></directory_root>
c#函数
public static void RestoreAllFilesFormXML(string RestoreFilePath, string sourceXmlFilePath, XmlDocument xmlDoc, XmlNode rootNode) { string fullName = null;//XML存储的信息的位置 string rootName = null; if(rootNode == null) { xmlDoc = new XmlDocument(); xmlDoc.Load(sourceXmlFilePath); rootNode = xmlDoc.SelectSingleNode(@"/directory_root"); fullName = rootNode.Attributes["directory_fullname"].Value; Console.WriteLine("FullName: " + fullName); DirectoryInfo rootDirectory = new DirectoryInfo(fullName); rootName = rootDirectory.Name;//得到该文件夹的名字 Console.WriteLine("RootName: " + rootName); DirectoryInfo restoreDirectory = new DirectoryInfo(RestoreFilePath); restoreDirectory.CreateSubdirectory(rootName);//创建根目录 RestoreFilePath = RestoreFilePath +"\\"+ rootName; } else { fullName = RestoreFilePath; DirectoryInfo rootDirectory = new DirectoryInfo(fullName); rootName = rootDirectory.Name;//得到该文件夹的名字 Console.WriteLine("FullName2: " + fullName); } XmlNodeList subFolder = rootNode.SelectNodes("folder");//XML中子文件夹集合 foreach(XmlNode node in subFolder) { string subFolderbName = node.Attributes["name"].Value; Console.WriteLine("subFolderbName: " + subFolderbName); DirectoryInfo subRestoreDirectory = new DirectoryInfo(RestoreFilePath); subRestoreDirectory.CreateSubdirectory(subFolderbName);//创建文件夹 string subRestorePath = RestoreFilePath + "\\" + subFolderbName; Console.WriteLine("subRestorePath: " + RestoreFilePath + "\\" + subFolderbName); RestoreAllFilesFormXML(subRestorePath, sourceXmlFilePath, xmlDoc, node);//递归 恢复该文件夹下的文件 } XmlNodeList subFile = rootNode.SelectNodes("file");//XML中子文件集合 foreach (XmlNode node in subFile) { string fileName = node.Attributes["name"].Value; Console.WriteLine("subFileName: " + fileName); Console.WriteLine(RestoreFilePath + "\\" + rootName + "\\" + fileName); File.Create(RestoreFilePath + "\\" + "\\" + fileName);//创建文件 } }
main函数调用
public static string LogPath = @"C:\Users\nhuang\Desktop\mylog.txt";public static string DirectoryPath = @"C:\Users\nhuang\Documents\学习资料";public static string DestinationXMLPath = @"C:\Users\nhuang\Desktop\a.xml";public static string RestoreFilePath = @"C:\Users\nhuang\Desktop";internal static void Main() { try { XmlNode tempNode = null; XmlDocument xmlDoc = new XmlDocument(); RestoreAllFilesFormXML(RestoreFilePath, DestinationXMLPath, xmlDoc, tempNode); } catch (InvalidOperationException) { // 异常处理程序 } catch (IOException ex) { MyLog(LogPath, "Error " + System.DateTime.Now.ToLongTimeString() + " :" + ex.Message);//ErrorLog } catch { throw; } finally { } }
0 0
- c# 根据XML递归还原路径
- C#根据路径获得文件名称
- C#根据路径获取文件名
- 根据目录路径递归创建目录
- 路径还原
- 路径还原
- 路径还原
- C#根据文件路径获取该文件夹路径、文件名、后缀名
- 根据递归定义的数据表循环生成xml
- 根据前中序,还原树
- C#用递归生成xml文件代码
- C# 写XML例子--根据行政代码树生成XML
- C# 写XML例子,根据行政代码树生成XML
- 关于在XML中根据路径查找对应元素
- 递归及如何用c#递归生成多层次XML文件
- C#递归生成XML文件,递归序列化对象
- C#中XML存文件路径问题
- Unity C#根据路径读取图片并转换成byte
- BFS&DFS
- spacemacs搭建C++环境
- 网络流习题(无代码)
- java字符串详解
- C执行过程
- c# 根据XML递归还原路径
- nohup使用密码在后台运行
- Mybatis持久层框架(详细讲解)
- Tyvj P1143 飘飘乎居士的约会
- Mac 终端基本命令
- 问题总汇
- SQL多表联合查询
- js中的this & var, function & object, prototype & apply
- 数据结构——10 双向链表插入和删除节点