C#从所选目录中检索子目录

时间:2013-05-30 21:35:17

标签: c# file file-upload directory

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

 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 个答案:

答案 0 :(得分: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();

答案 1 :(得分:1)

将方法重载与SearchOption.AllDirectories

一起使用

答案 2 :(得分:0)

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

System.IO.Directory.GetDirectories(string rootDirectory);

答案 3 :(得分: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);
   }
}

我还没有测试过,但是这样的事情应该可行。