Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何列出目录中的所有子目录_C#_Directory - Fatal编程技术网

C# 如何列出目录中的所有子目录

C# 如何列出目录中的所有子目录,c#,directory,C#,Directory,我正在做一个项目,我需要列出一个目录中的所有子目录,例如,我如何列出c中的所有子目录:\用于获取由“your\u directory\u path”指定的目录的子目录。结果是一个字符串数组 var directories = Directory.GetDirectories("your_directory_path"); 默认情况下,它只返回一级深的子目录。有递归返回所有结果和过滤结果的选项,如克莱夫的答案所示 避免未经授权的访问异常 如果你点击了一个你没有访问权的目录,你很可能会得到一个未

我正在做一个项目,我需要列出一个目录中的所有子目录,例如,我如何列出c中的所有子目录:\

用于获取由“your\u directory\u path”指定的目录的子目录。结果是一个字符串数组

var directories = Directory.GetDirectories("your_directory_path");
默认情况下,它只返回一级深的子目录。有递归返回所有结果和过滤结果的选项,如克莱夫的答案所示


避免未经授权的访问异常

如果你点击了一个你没有访问权的目录,你很可能会得到一个未经授权的访问异常

您可能需要创建自己的方法来处理异常,如下所示:

public class CustomSearcher
{ 
    public static List<string> GetDirectories(string path, string searchPattern = "*",
        SearchOption searchOption = SearchOption.AllDirectories)
    {
        if (searchOption == SearchOption.TopDirectoryOnly)
            return Directory.GetDirectories(path, searchPattern).ToList();

        var directories = new List<string>(GetDirectories(path, searchPattern));

        for (var i = 0; i < directories.Count; i++)
            directories.AddRange(GetDirectories(directories[i], searchPattern));

        return directories;
    }

    private static List<string> GetDirectories(string path, string searchPattern)
    {
        try
        {
            return Directory.GetDirectories(path, searchPattern).ToList();
        }
        catch (UnauthorizedAccessException)
        {
            return new List<string>();
        }
    }
}
var directories = CustomSearcher.GetDirectories("your_directory_path");
它递归地遍历一个目录及其所有子目录。如果它访问了一个子目录,而该子目录是它无法访问的,它会抛出一个
UnauthorizedAccessException
,它会捕获该异常并返回该不可访问目录的空列表。然后继续到下一个子目录。

简单如下:

string[] folders = System.IO.Directory.GetDirectories(@"C:\My Sample Path\","*", System.IO.SearchOption.AllDirectories);
使用系统;
使用System.Collections.Generic;
使用System.IO;
使用System.Linq;
使用系统文本;
使用System.Threading.Tasks;
名称空间试验
{
公共班级1
{
静态void Main(字符串[]参数)
{
string[]fileArray=Directory.GetDirectories(“您的路径”);
for(int i=0;i
显示所有目录和子目录 def dir():


要仅获取没有完整路径的文件夹的简单列表,可以使用:

Directory.GetDirectories(parentDirectory).Select(d => Path.GetRelativePath(parentDirectory, d)

如果您不想在列表框中列出并允许用户选择哪个文件夹,是的,这个答案有效。这是Pyhon,不是C#,不是吗?超级解决方案!结尾需要一个额外的结束括号(本可以编辑它,但需要更改\添加至少六个字符才能接受)。还要注意,您需要安装.NET Standard 2.1才能使用Path.GetRelativePath
FolderBrowserDialog fbd = new FolderBrowserDialog();

        DialogResult result = fbd.ShowDialog();

        string[] files = Directory.GetFiles(fbd.SelectedPath);
        string[] dirs = Directory.GetDirectories(fbd.SelectedPath);

        foreach (string item2 in dirs)
        {
            FileInfo f = new FileInfo(item2);

            listBox1.Items.Add(f.Name);

        }

        foreach (string item in files)
        {
            FileInfo f = new FileInfo(item);

            listBox1.Items.Add(f.Name);

        }
from glob import glob

dir = []

dir = glob("path")

def all_sub_dir(dir):
{

     for item in dir:

            {
                b = "{}\*".format(item)
                dir += glob(b)
            }
         print(dir)
}
Directory.GetDirectories(parentDirectory).Select(d => Path.GetRelativePath(parentDirectory, d)