मैं एक परियोजना पर काम कर रहा हूँ और मुझे एक निर्देशिका में सभी उप निर्देशिकाओं को सूचीबद्ध करने की आवश्यकता है उदाहरण के लिए मैं सभी उप निर्देशिकाओं को 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)
}