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