मेरे ऐप में, मैंने एक सिस्टम बनाया है जहां उपयोगकर्ता चित्र गैलरी बना सकते हैं। डिस्क पर श्रेणी_नाम/गैलरी_नाम/{चित्र} के प्रारूप में फ़ोल्डर में आयोजित तस्वीरें। प्रत्येक अपलोड की गई तस्वीर को ऊपर दी गई प्रासंगिक निर्देशिका संरचना के तहत संग्रहीत किया जाता है।"निर्देशिका खाली नहीं है" त्रुटि प्रोग्राम को प्रोग्रामेटिक रूप से हटाने की कोशिश करते समय
हालांकि किसी श्रेणी को हटाने की कोशिश करते समय, साथ ही डेटाबेस से हटाना, मैं सिस्टम से प्रासंगिक फ़ोल्डरों को भी हटाना चाहता हूं। जब मैं पहली बार त्रुटि संदेश प्राप्त हुआ "निर्देशिका खाली नहीं है" मैं searched and found इस समाधान:
public static void DeleteDirectory(string target_dir)
{
string[] files = Directory.GetFiles(target_dir);
string[] dirs = Directory.GetDirectories(target_dir);
foreach (string file in files)
{
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
}
foreach (string dir in dirs)
{
DeleteDirectory(dir);
}
Directory.Delete(target_dir, false);
}
इस समाधान के साथ
, "GALLERY_NAME" फ़ोल्डर में तस्वीरें ठीक नष्ट कर दिया जाता है, तो GALLERY_NAME फ़ोल्डर को स्वयं को नष्ट कर दिया जाता है ठीक। इसलिए अब हम एक खाली श्रेणी_नाम फ़ोल्डर के साथ छोड़ दिए गए हैं। फिर उपरोक्त subroutine (Directory.Delete(target_dir, false);
) में कोड का अंतिम बिट श्रेणी_नाम फ़ोल्डर को हटाने के लिए बुलाया जाता है। त्रुटि फिर से बढ़ती है ..
क्या कोई इसका समाधान जानता है?
Directory.Delete(target_dir, true);
काम नहीं किया, इसलिए मैंने एक विकल्प की कोशिश की।- मेरे पास मूल फ़ोल्डर पर पूर्ण नियंत्रण है और श्रेणी_नाम और गैलरी_नाम फ़ोल्डरों को बिना किसी समस्या के प्रोग्रामेटिक रूप से बनाया गया है।
- जैसा कि मैंने उल्लेख किया है, उप निर्देशिका (गैलरी_नाम फ़ोल्डर्स) और उनकी सामग्री (फोटो) इस कोड के साथ ठीक है हटा दी गई है। यह श्रेणी_नाम फ़ोल्डर है जो त्रुटि का कारण बनता है, भले ही इस कोड के बाद, यह केवल एक खाली फ़ोल्डर है।
अपवाद संदेश मैं मिलता है:
System.IO.IOException was unhandled by user code
HResult=-2147024751
Message=The directory is not empty.
Source=mscorlib
StackTrace:
at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.DeleteHelper(String fullPath, String userPath, Boolean recursive, Boolean throwOnTopLevelDirectoryNotFound)
at System.IO.Directory.Delete(String fullPath, String userPath, Boolean recursive, Boolean checkHost)
at System.IO.Directory.Delete(String path)
at MyApp.PhotoGallery.Categories.deleteCategory(Int32 cID, String categoryname) in d:\Documents\My Dropbox\web projects\MyAppFolder\App_Code\BLL\PhotoGallery.vb:line 291
at _admhades_PhotoGallery.deleteCategory(Int32 categoryID, String categoryname) in d:\Documents\My Dropbox\web projects\HavadisPre\_admhades\PhotoGallery.aspx.vb:line 71
आपकी फ़ोल्डर अनुमतियां क्या हैं? – northpole
मेरे पास पूर्ण नियंत्रण है .. एक साइड नोट के रूप में, फ़ोल्डर्स प्रोग्रामेटिक रूप से भी बनाए जाते हैं .. –
मुझे लगता है कि आप उपरोक्त को http://stackoverflow.com/questions/329355/cannot-delete-directory-with- निर्देशिका- deletepath-true - क्या आप सुनिश्चित हैं कि फ़ोल्डर विंडोज एक्सप्लोरर में खुला नहीं है, उदाहरण के लिए अन्य उत्तरों के अनुसार? क्या फ़ोल्डर में कुछ और अभी भी लॉक हो सकता है? – dash