遍历文件夹所有子文件夹&文件并写入xml文档

时间:2022-09-21 19:15:55
输入:一个文件夹的绝对地址
输出:xml文档
要求:当是文件夹写入<文件夹的名字 Arr="文件夹">
      当是文件写入<文件名的名字  Arr="文件" length="这里输入文件的大小" extension="这里输入文件的扩展名" >
我要的是代码,我自己也试过多次了还是不成功。只能做一会伸手党。
我先贴我的代码
public void dosth()
        {
            DirectoryInfo tempDi = new DirectoryInfo(directoryName);//directoryName文件夹的绝对地址
            XmlElement xe = xDoc.CreateElement(tempDi.Name);
            xe.SetAttribute("Arr", "文件夹");
            xDoc.AppendChild(xe);
            dos(tempDi);//递归该文件夹下面的目录
            xDoc.Save(xmlName);
        }
        private void dos(DirectoryInfo dis)
        {
            
            if ((dis.GetDirectories()).Length != 0)//存在子文件夹
            {
                foreach (DirectoryInfo di in dis.GetDirectories())
                {
                    XmlNode root = xDoc.SelectSingleNode(dis.Name);
                    XmlElement xe = xDoc.CreateElement(di.Name);
                    xe.SetAttribute("Arr", "文件夹");
                    root.AppendChild(xe);
                    dos(di);//递归
                }
            }
            else//dis没有子文件夹,将dis下所有文件读入xml文档
            {
                FileInfo[] files = dis.GetFiles();
                XmlNode root = xDoc.SelectSingleNode(dis.Name);//这里出问题了,不知道怎么找回dis这个node,我调试的时候root=null,但是xml文档确实存在请看下面的xml文档
                foreach (FileInfo fi in files)
                {
                    XmlElement newxe = xDoc.CreateElement(fi.Name);
                    newxe.SetAttribute("Arr", "文件");
                    newxe.SetAttribute("Length", fi.Length.ToString());
                    newxe.SetAttribute("extension", fi.Extension);
                    root.AppendChild(newxe);
                }
            }
        }
<?xml version="1.0" encoding="utf-8" ?> 
- <!-- 文件夹
  --> 
- <豌豆夹 Arr="文件夹">
      <Config Arr="文件夹" /> //要找到这个Node
  </豌豆夹>

3 个解决方案

#1


或者这么问这个XML文档
<?xml version="1.0" encoding="utf-8" ?>  
- <!-- 文件夹
  -->  
- <豌豆夹 >
        <Config>
            <Sth1>
                 <Nth/>
            </Sth1>
            <Sth2>
                <Nth2/>
            </Sth2> 
        </Config>
  </豌豆夹>
我怎么往<Sth1>里面添加子元素呢

#2


解决了~结贴

#3


文件夹大小怎么写进去的?能给出代码吗?

#1


或者这么问这个XML文档
<?xml version="1.0" encoding="utf-8" ?>  
- <!-- 文件夹
  -->  
- <豌豆夹 >
        <Config>
            <Sth1>
                 <Nth/>
            </Sth1>
            <Sth2>
                <Nth2/>
            </Sth2> 
        </Config>
  </豌豆夹>
我怎么往<Sth1>里面添加子元素呢

#2


解决了~结贴

#3


文件夹大小怎么写进去的?能给出代码吗?