我正在尝试找到一种从所选目录中检索子文件夹的方法。我在我的代码中使用了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);
}
}
}
答案 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);
}
}
我还没有测试过,但是这样的事情应该可行。