0

我正在尝试找到一种从选定目录中检索子文件夹的方法。我在我的代码中使用 FolderBrowserDialog 让所有用户选择程序将使用的“根”目录。但我坚持如何从中获取子目录。我想将这些子目录字符串名称放在一个数组中以供以后使用。我尝试使用 Directory.getFiles("the selected path"),但这不显示子目录。任何帮助是极大的赞赏!谢谢

 private void Folderselector_Click(object sender, EventArgs e)
    {
        FolderBrowserDialog folderBrowserDialog1 = new FolderBrowserDialog();
        if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
        {
            listView1.Items.Clear();
            string[] files = Directory.GetFiles(folderBrowserDialog1.SelectedPath);
            foreach (string file in files)
            {
                string fileName = Path.GetFileNameWithoutExtension(file);
                ListViewItem item = new ListViewItem(fileName);
                item.Tag = file;
                listView1.Items.Add(item);
            }
        }
    }
4

4 回答 4

1

将方法重载与 SearchOption.AllDirectories 一起使用

于 2013-05-30T21:44:44.290 回答
1

像这样的东西?

var dirs = new DirectoryInfo(path).GetDirectories("*",SearchOption.AllDirectories)
              .Select(d => d.FullName)
              .ToList();

如果你想要相对于你的根目录的目录名

var dirs = new DirectoryInfo(path).GetDirectories("*",SearchOption.AllDirectories)
               .Select(d => d.FullName)
               .Select(s => new Uri(path).MakeRelative(new Uri(s)).ToString())
               .ToList();
于 2013-05-30T21:37:31.813 回答
0
System.IO.Directory.GetDirectories(string rootDirectory);

递归是您的解决方案

List<string> dirsResult = new List<string>();
public void GetDirectories(string currentDirectory)
{   
   string[] directories = Directory.GetDirectories(currentDirectory);
   foreach(var dir in directories)
   {
       dirsResult.Add(dir);
       GetDirectories(dir);
   }
}

我还没有测试过,但是这样的东西应该可以工作。

于 2013-05-30T22:14:28.713 回答
0

关闭,但目录有不同的方法:

System.IO.Directory.GetDirectories(string rootDirectory);
于 2013-05-30T21:39:22.807 回答