日期:2014-05-18  浏览次数:20797 次

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

------解决方案--------------------
不知你说的还原是什么意思,如果要使用
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load("C:\test\dfdfsdfd.txt");
------解决方案--------------------
递归遍历,然后将路径输出为xml ??
------解决方案--------------------
C# code
// 调用
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);
}