如何通过从xml读取出来的文件路径还原出文件,要跟存储的文件的层次结构相同。现在已经获得路径,路径都是这种形式的:C:\test\dfdfsdfd.txt,C:\test\d\dd.txt。

解决方案 »

  1.   

    不知你说的还原是什么意思,如果要使用
    XmlDocument xmlDoc = new XmlDocument();
    xmlDoc.Load("C:\test\dfdfsdfd.txt");
      

  2.   

    递归遍历,然后将路径输出为xml  ??
      

  3.   

    不是  现在问题是我已经从XML文件中获取了所存储的某个文件夹下的子文件和文件的路径,怎么根据路径还原出原来的文件夹和文件。
      

  4.   

    xml 全格式怎样的,节点名和节点值
      

  5.   

      <?xml version="1.0" encoding="utf-8" ?> 
    - <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>
    展开的一部分就是这样的
      

  6.   

      <?xml version="1.0" encoding="utf-8" ?> 
    - <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>
    这个格式的,简单的一些属性和文本
      

  7.   

    // 调用
    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);
    }
      

  8.   

    由于今早急着完成程序,没来得及感谢各位,谢谢各位对我的帮助,avphoenixi写的对XML的读取方法很不错,不知道对于一个大文件来说的话行不行,借用了,谢谢!