C# 获取目录中的所有文件以及所有子目录下的所有文件

C# 获取目录中的所有文件以及所有子目录下的所有文件,c#,file,directory,C#,File,Directory,我在获取所有文件夹和子目录下的所有文件时遇到了一点问题。。保持这条路 这是我目前的代码 这一切都会过去的,对吗?所有的子目录和一切 private List<String> DirSearch(string sDir) { List<String> files = new List<String>(); try { foreach (string f in Directory.Ge

我在获取所有文件夹和子目录下的所有文件时遇到了一点问题。。保持这条路

这是我目前的代码

这一切都会过去的,对吗?所有的子目录和一切

private List<String> DirSearch(string sDir)
    {
        List<String> files = new List<String>();
        try
        {
            foreach (string f in Directory.GetFiles(sDir))
            {
                files.Add(f);
            }
            foreach (string d in Directory.GetDirectories(sDir))
            {
                files.AddRange(DirSearch(d));
            }
        }
        catch (System.Exception excpt)
        {
            MessageBox.Show(excpt.Message);
        }

        return files;
    }
这就是将它们添加到XML文件中的方法

private void addFilesFromFolder(List<string> files)
    {
        String appDataFolder = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData).ToString();
        String gpsPath = appDataFolder + "\\GameProfileSaver";

        XmlDocument doc = new XmlDocument();
        doc.Load(gpsPath + "\\games.xml");
        XmlNode fileToAdd = doc.CreateElement("file");
        String gName = comboBox1.SelectedItem.ToString();
        XmlNode gameName = doc.SelectSingleNode("//games/game[gameName='" + gName + "']/Files");

        foreach (string f in files)
        {
            fileToAdd.InnerText = f;
            gameName.AppendChild(fileToAdd);
        }

        doc.Save(gpsPath + "\\games.xml");
    }
private void addFilesFromFolder(列出文件)
{
字符串appDataFolder=Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData.ToString();
字符串gpsPath=appDataFolder+“\\GameProfileSaver”;
XmlDocument doc=新的XmlDocument();
doc.Load(gpsPath+“\\games.xml”);
XmlNode fileToAdd=doc.CreateElement(“文件”);
字符串gName=comboBox1.SelectedItem.ToString();
XmlNode gameName=doc.SelectSingleNode(“//games/game[gameName=”“+gName+”]/Files”);
foreach(文件中的字符串f)
{
fileToAdd.InnerText=f;
gameName.AppendChild(fileToAdd);
}
文档保存(gpsPath+“\\games.xml”);
}

尝试移动
XmlNode fileToAdd=doc.CreateElement(“文件”)
内的code>:

XmlDocument doc = new XmlDocument();
doc.Load(gpsPath + "\\games.xml");
String gName = comboBox1.SelectedItem.ToString();
XmlNode gameName = doc.SelectSingleNode("//games/game[gameName='" + gName + "']/Files");

foreach (string f in files)
{
    XmlNode fileToAdd = doc.CreateElement("file");                
    fileToAdd.InnerText = f;
    gameName.AppendChild(fileToAdd);
}

我怀疑,因为您正在重用
XmlNode
,所以只能获取列表中的最后一个文件。

尝试将
XmlNode文件移动到add=doc.CreateElement(“文件”)
内的code>:

XmlDocument doc = new XmlDocument();
doc.Load(gpsPath + "\\games.xml");
String gName = comboBox1.SelectedItem.ToString();
XmlNode gameName = doc.SelectSingleNode("//games/game[gameName='" + gName + "']/Files");

foreach (string f in files)
{
    XmlNode fileToAdd = doc.CreateElement("file");                
    fileToAdd.InnerText = f;
    gameName.AppendChild(fileToAdd);
}

我怀疑,因为您正在重用
XmlNode
,所以只能获取列表中的最后一个文件。

尝试将
XmlNode文件移动到add=doc.CreateElement(“文件”)
内的code>:

XmlDocument doc = new XmlDocument();
doc.Load(gpsPath + "\\games.xml");
String gName = comboBox1.SelectedItem.ToString();
XmlNode gameName = doc.SelectSingleNode("//games/game[gameName='" + gName + "']/Files");

foreach (string f in files)
{
    XmlNode fileToAdd = doc.CreateElement("file");                
    fileToAdd.InnerText = f;
    gameName.AppendChild(fileToAdd);
}

我怀疑,因为您正在重用
XmlNode
,所以只能获取列表中的最后一个文件。

尝试将
XmlNode文件移动到add=doc.CreateElement(“文件”)
内的code>:

XmlDocument doc = new XmlDocument();
doc.Load(gpsPath + "\\games.xml");
String gName = comboBox1.SelectedItem.ToString();
XmlNode gameName = doc.SelectSingleNode("//games/game[gameName='" + gName + "']/Files");

foreach (string f in files)
{
    XmlNode fileToAdd = doc.CreateElement("file");                
    fileToAdd.InnerText = f;
    gameName.AppendChild(fileToAdd);
}

我怀疑,因为您正在重用
XmlNode
,所以只能得到列表中的最后一个文件。

您也可以查看。它支持SearchOption参数的递归性。您可能只需执行
foreach(Directory.GetFiles(sDir,“*”,SearchOption.AllDirectories)中的字符串f))
即可,而不必使用递归函数。阅读相关内容,还可以查看。它支持SearchOption参数的递归性。您可能只需执行
foreach(Directory.GetFiles(sDir,“*”,SearchOption.AllDirectories)中的字符串f))
即可,而不必使用递归函数。阅读相关内容,还可以查看。它支持SearchOption参数的递归性。您可能只需执行
foreach(Directory.GetFiles(sDir,“*”,SearchOption.AllDirectories)中的字符串f))
即可,而不必使用递归函数。阅读相关内容,还可以查看。它支持SearchOption参数的递归性。您可能只需执行
foreach(Directory.GetFiles(sDir,“*”,SearchOption.AllDirectories)中的字符串f)
,而不必使用递归函数。请仔细阅读,谢谢!这解决了我的问题。。。就这么简单。。我没想过把它放进我的房间…谢谢!这解决了我的问题。。。就这么简单。。我没想过把它放进我的房间…谢谢!这解决了我的问题。。。就这么简单。。我没想过把它放进我的房间…谢谢!这解决了我的问题。。。就这么简单。。我没想过把它放进我的房间。。。