मैं एक परियोजना पर काम कर रहा हूँ और मुझे एक निर्देशिका में सभी उप निर्देशिकाओं को सूचीबद्ध करने की आवश्यकता है उदाहरण के लिए मैं सभी उप निर्देशिकाओं को c: \
जवाबों:
"Your_directory_path"Directory.GetDirectories द्वारा निर्दिष्ट निर्देशिका के उपनिर्देशिका प्राप्त करने के लिए उपयोग करें । परिणाम तार की एक सरणी है।
var directories = Directory.GetDirectories("your_directory_path");
डिफ़ॉल्ट रूप से, यह केवल उपनिर्देशिका को एक स्तर गहरा देता है। सभी पुनरावर्ती लौटने और परिणामों को फ़िल्टर करने के लिए विकल्प हैं, यहां दस्तावेज , और क्लाइव के उत्तर में दिखाया गया है।
अनधिकृत असफलता से बचना
यह आसानी से संभव है कि आपको UnauthorizedAccessExceptionएक निर्देशिका मिल जाए, जिस पर आपकी पहुंच न हो।
आपको अपना स्वयं का तरीका बनाना होगा जो अपवाद को संभालता है, जैसे:
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, यह अपवाद को पकड़ता है और बस उस दुर्गम निर्देशिका के लिए एक खाली सूची देता है। फिर यह अगले उपनिर्देशिका पर जारी है।
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();
}
}
}
पूर्ण पथ के बिना फ़ोल्डर्स की सरल सूची प्राप्त करने के लिए, आप इसका उपयोग कर सकते हैं:
Directory.GetDirectories(parentDirectory).Select(d => Path.GetRelativePath(parentDirectory, d)
डीआईआर डिर ():
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)
}