web-dev-qa-db-fra.com

comment lister tous les sous-répertoires d'un répertoire

Je travaille sur un projet et je dois lister tous les sous-répertoires d'un répertoire. Par exemple, comment pourrais-je lister tous les sous-répertoires de c: \

72
Matthewj

Utilisation Directory.GetDirectories pour obtenir les sous-répertoires du répertoire spécifié par "your_directory_path". Le résultat est un tableau de chaînes.

var directories = Directory.GetDirectories("your_directory_path");

Par défaut, cela ne renvoie que les sous-répertoires d'un niveau. Il y a des options pour tout renvoyer récursivement et filtrer les résultats, documenté ici , et montré dans la réponse de Clive.


Éviter une exception UnauthorizedAccessException

Il est facilement possible que vous obteniez un UnauthorizedAccessException si vous cliquez sur un répertoire auquel vous n'avez pas accès.

Vous devrez peut-être créer votre propre méthode qui gère l'exception, comme ceci:

public class CustomSearcher
{ 
    public static List<string> GetDirectories(string path, string searchPattern = "*",
        SearchOption searchOption = SearchOption.TopDirectoryOnly)
    {
        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>();
        }
    }
}

Et puis appelez ça comme ça:

var directories = CustomSearcher.GetDirectories("your_directory_path");
112
Grant

Facile comme ça:

string[] folders = System.IO.Directory.GetDirectories(@"C:\My Sample Path\","*", System.IO.SearchOption.AllDirectories);
49
Clive
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);

        }
6
Hakan SUMNULU
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace TRIAL
{
    public class Class1
    {
        static void Main(string[] args)
        {
           string[] fileArray = Directory.GetDirectories("YOUR PATH");
           for (int i = 0; i < fileArray.Length; i++)
           {

               Console.WriteLine(fileArray[i]);
           }
            Console.ReadLine();
        }
    }
}
5
Mayur Narula

afficher tous les répertoires et sous-répertoires

def dir ():

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)
}
0
mostafa-hajian