2010-02-08 11 views
52

मैं उस फ़ोल्डर में एक फ़ोल्डर और सभी फाइलों और फ़ोल्डरों को हटाने की कोशिश कर रहा हूं, मैं नीचे दिए गए कोड का उपयोग कर रहा हूं और मुझे त्रुटि Folder is not empty त्रुटि है, इस पर कोई सुझाव मैं कर सकता हूँ?सी # उस फ़ोल्डर के भीतर एक फ़ोल्डर और सभी फाइलों और फ़ोल्डर्स को हटाएं

try 
{ 
    var dir = new DirectoryInfo(@FolderPath); 
    dir.Attributes = dir.Attributes & ~FileAttributes.ReadOnly; 
    dir.Delete(); 
    dataGridView1.Rows.RemoveAt(dataGridView1.SelectedRows[i].Index); 
} 
catch (IOException ex) 
{ 
    MessageBox.Show(ex.Message); 
} 

उत्तर

84
dir.Delete(true); // true => recursive delete 
54

मैनुअल पढ़ें:

Directory.Delete Method (String, Boolean)

Directory.Delete(folderPath, true); 
+14

मैन्युअल क्यों पढ़ा जाए जब यह Google पर बहुत तेज़ हो और यहां समाप्त हो जाए? – reggaeguitar

+0

जब सत्य पर सेट किया जाता है तो यह सभी डीआईआर, उपदिर और पथ में फ़ाइलों को हटा देगा। क्या यह पथ को भी हटा देगा? यदि गलत पर सेट किया गया है, तो क्या यह पथ को हटा देगा और उपधारा और पथ में फ़ाइलों के बारे में क्या होगा? – helloworld

4

Directory.Delete विधि एक पुनरावर्ती बूलियन पैरामीटर है, यह क्या करना चाहिए क्या आप

+0

जब सत्य पर सेट किया जाता है तो यह सभी डीआईआर, उपदिर और पथ में फ़ाइलों को हटा देगा। क्या यह पथ को भी हटा देगा? यदि गलत पर सेट किया गया है, तो क्या यह पथ हटा देगा और subdir और पथ – helloworld

6

अरे, जरूरत के बारे में क्या सिर्फ Directory.Delete(path, true); पर कॉल करना?

+0

में फ़ाइलों के बारे में क्या होगा जब सत्य पर सेट किया जाएगा तो यह सभी डीआईआर, उपदिर और पथ में फ़ाइलों को हटा देगा। क्या यह पथ को भी हटा देगा? यदि गलत पर सेट किया गया है, तो क्या यह पथ को हटा देगा और उपधारा और पथ में फ़ाइलों के बारे में क्या होगा? – helloworld

18

प्रयास करें:

System.IO.Directory.Delete(path,true) 

यह रिकर्सिवली संभालने आपको अनुमति ऐसा करने के लिए है "पथ" के नीचे सभी फ़ाइलों और फ़ोल्डरों को हटा देंगे।

+0

जब सत्य पर सेट किया जाता है तो यह सभी डीआईआर, उपदिर और पथ में फ़ाइलों को हटा देगा। क्या यह पथ को भी हटा देगा? यदि गलत पर सेट किया गया है, तो क्या यह पथ को हटा देगा और उपधारा और पथ में फ़ाइलों के बारे में क्या होगा? – helloworld

3

आप उपयोग करना चाहिए:

dir.Delete(true); 

रिकर्सिवली भी है कि फ़ोल्डर की सामग्री को हटाने के लिए। एमएसडीएन DirectoryInfo.Delete() overloads देखें।

+0

जब सत्य पर सेट किया जाता है तो यह सभी डीआईआर, उपदिर और पथ में फ़ाइलों को हटा देगा। क्या यह पथ को भी हटा देगा? यदि गलत पर सेट किया गया है, तो क्या यह पथ को हटा देगा और उपधारा और पथ में फ़ाइलों के बारे में क्या होगा? – helloworld

0
public void Empty(System.IO.DirectoryInfo directory) 
{ 
    try 
    { 
     logger.DebugFormat("Empty directory {0}", directory.FullName); 
     foreach (System.IO.FileInfo file in directory.GetFiles()) file.Delete(); 
     foreach (System.IO.DirectoryInfo subDirectory in directory.GetDirectories()) subDirectory.Delete(true); 
    } 
    catch (Exception ex) 
    { 
     ex.Data.Add("directory", Convert.ToString(directory.FullName, CultureInfo.InvariantCulture)); 

     throw new Exception(string.Format(CultureInfo.InvariantCulture,"Method:{0}", ex.TargetSite), ex); 
    } 
} 
2

इसे आजमाएं।

namespace EraseJunkFiles 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      DirectoryInfo yourRootDir = new DirectoryInfo(@"C:\somedirectory\"); 
      foreach (DirectoryInfo dir in yourRootDir.GetDirectories()) 
        DeleteDirectory(dir.FullName, true); 
     } 
     public static void DeleteDirectory(string directoryName, bool checkDirectiryExist) 
     { 
      if (Directory.Exists(directoryName)) 
       Directory.Delete(directoryName, true); 
      else if (checkDirectiryExist) 
       throw new SystemException("Directory you want to delete is not exist"); 
     } 
    } 
} 
संबंधित मुद्दे