如何通过从xml读取出来的文件路径还原出文件,要跟存储的文件的层次结构相同。现在已经获得路径,路径都是这种形式的:C:\test\dfdfsdfd.txt,C:\test\d\dd.txt。
解决方案 »
- 进程与线程
- 用.net如何将程序集和.net框架打包成一个exe程序,执行exe时就能自动判断是否安装.net框架
- 急急急!!! SVG 中如何打开一个链接????
- C# 全选 更新保存问题
- vs 2008 detailsview 数据更新,插入的限制
- combobox 显示问题
- [求救]控件A响应控件B的问题~~~~```
- 一个很简单很简单的问题!!(非技术问题)
- GataGrid 中如何添加横向滚动条
- 一个DATAVIEW dv怎么通过dv.RowFilter筛选形成一个新的DATAVIEW DW
- Global.asax 定时更新数据的问题
- 江湖救急这次,请各位大侠救我一命,诡异的问题,苦想几天没解决
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("C:\test\dfdfsdfd.txt");
- <root>
- <file filename="3.txt">
<created>2012/6/12 16:09:04</created>
<modified>2012/6/12 16:09:04</modified>
<path>C:\test\3.txt</path>
</file>
- <file filename="dfdfsdfd.txt">
<created>2012/6/11 16:25:19</created>
<modified>2012/6/11 16:25:26</modified>
<path>C:\test\dfdfsdfd.txt</path>
</file>
+ <file filename="mmkkl.txt">
<created>2012/6/13 13:47:49</created>
<modified>2012/6/13 13:47:56</modified>
<path>C:\test\mmkkl.txt</path>
</file>
- <file filename="mmmm.txt">
<created>2012/6/13 13:47:49</created>
<modified>2012/6/13 13:47:49</modified>
<path>C:\test\mmmm.txt</path>
</file>
+ <folder foldername="d">
<created>2012/6/13 13:48:31</created>
<modified>2012/6/15 13:59:41</modified>
<path>C:\test\d</path>
- <file filename="dd.txt">
<created>2012/6/15 13:59:39</created>
<modified>2012/6/15 13:59:39</modified>
<path>C:\test\d\dd.txt</path>
</file>
</folder>
+ <folder foldername="j">
<created>2012/6/12 16:20:31</created>
<modified>2012/6/14 13:48:37</modified>
<path>C:\test\j</path>
- <folder foldername="n">
<created>2012/6/14 13:48:37</created>
<modified>2012/6/14 13:48:37</modified>
<path>C:\test\j\n</path>
- <file filename="g.txt">
<created>2012/6/14 13:48:37</created>
<modified>2012/6/12 18:01:12</modified>
<path>C:\test\j\n\g.txt</path>
</file>
- <folder foldername="hhh">
<created>2012/6/14 13:48:37</created>
<modified>2012/6/14 13:48:37</modified>
<path>C:\test\j\n\hhh</path>
- <file filename="ff.txt">
<created>2012/6/14 13:48:37</created>
<modified>2012/6/14 9:48:02</modified>
<path>C:\test\j\n\hhh\ff.txt</path>
</file>
</folder>
</folder>
</folder>
+ <folder foldername="jmmm">
<created>2012/6/13 15:56:41</created>
<modified>2012/6/15 13:59:46</modified>
<path>C:\test\jmmm</path>
- <file filename="ff.txt">
<created>2012/6/15 13:59:45</created>
<modified>2012/6/15 13:59:45</modified>
<path>C:\test\jmmm\ff.txt</path>
</file>
</folder>
- <folder foldername="k">
<created>2012/6/13 16:04:48</created>
<modified>2012/6/15 13:59:51</modified>
<path>C:\test\k</path>
- <file filename="ggggg.txt">
<created>2012/6/15 13:59:50</created>
<modified>2012/6/15 13:59:50</modified>
<path>C:\test\k\ggggg.txt</path>
</file>
</folder>
- <folder foldername="mmm">
<created>2012/6/12 16:08:49</created>
<modified>2012/6/14 9:38:19</modified>
<path>C:\test\mmm</path>
- <file filename="ggg.txt">
<created>2012/6/12 16:09:04</created>
<modified>2012/6/12 16:09:17</modified>
<path>C:\test\mmm\ggg.txt</path>
</file>
- <folder foldername="n">
<created>2012/6/12 16:08:55</created>
<modified>2012/6/14 9:47:58</modified>
<path>C:\test\mmm\n</path>
- <file filename="g.txt">
<created>2012/6/12 18:01:03</created>
<modified>2012/6/12 18:01:12</modified>
<path>C:\test\mmm\n\g.txt</path>
</file>
- <folder foldername="hhh">
<created>2012/6/14 9:47:55</created>
<modified>2012/6/14 9:48:03</modified>
<path>C:\test\mmm\n\hhh</path>
- <file filename="ff.txt">
<created>2012/6/14 9:48:02</created>
<modified>2012/6/14 9:48:02</modified>
<path>C:\test\mmm\n\hhh\ff.txt</path>
</file>
</folder>
</folder>
</folder>
</root>
展开的一部分就是这样的
- <root>
- <file filename="3.txt">
<created>2012/6/12 16:09:04</created>
<modified>2012/6/12 16:09:04</modified>
<path>C:\test\3.txt</path>
</file>
- <folder foldername="d">
<created>2012/6/13 13:48:31</created>
<modified>2012/6/15 13:59:41</modified>
<path>C:\test\d</path>
- <file filename="dd.txt">
<created>2012/6/15 13:59:39</created>
<modified>2012/6/15 13:59:39</modified>
<path>C:\test\d\dd.txt</path>
</file>
</folder>
</root>
这个格式的,简单的一些属性和文本
var xmlDoc = new XmlDocument();
xmlDoc.LoadXml(......);
var fdns = xmlDoc.SelectSingleNode("root");
Select(fdns);// 两个方法
private static void Select(XmlNode node)
{
var dns = node.SelectNodes("folder");
foreach (XmlNode item in dns)
{
Make(item);
}
var fns = node.SelectNodes("file");
foreach (XmlNode item in fns)
{
Make(item);
}
}private static void Make(XmlNode node)
{
var path = node.SelectSingleNode("path").InnerText;
var ct = DateTime.Parse(node.SelectSingleNode("created").InnerText);
var mt = DateTime.Parse(node.SelectSingleNode("modified").InnerText);
FileSystemInfo fsi = null;
switch (node.Name)
{
case "file":
{
Directory.CreateDirectory(Path.GetDirectoryName(path));
using (var stream = File.Open(path, FileMode.Create))
{
stream.WriteByte(0);
}
fsi = new FileInfo(path);
break;
}
case "folder":
{
fsi = Directory.CreateDirectory(path);
break;
}
default:
break;
}
fsi.CreationTime = ct;
fsi.LastWriteTime = mt;
Select(node);
}