C # किसी फ़ोल्डर और सभी फ़ाइलों और फ़ोल्डरों को उस फ़ोल्डर के भीतर हटा दें


104

मैं उस फ़ोल्डर के भीतर एक फ़ोल्डर और सभी फ़ाइलों और फ़ोल्डरों को हटाने की कोशिश कर रहा हूं, मैं नीचे दिए गए कोड का उपयोग कर रहा हूं और मुझे त्रुटि मिलती है 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);
}

जवाबों:



111

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

Directory.Delete विधि (स्ट्रिंग, बूलियन)

Directory.Delete(folderPath, true);

68
जब इसे बहुत जल्दी गूगल करने और यहाँ समाप्त करने के लिए मैनुअल को क्यों पढ़ा जाए?
रेगिगुएटर

5
यह इतना सच है
Corvin

4
वास्तव में ... बस इस googled, और यह पोस्ट Google से पहला परिणाम था।
मास्टरएन 8

2
मैं क्या करता हूं कभी-कभी सवाल पूछते हैं और फिर इसका जवाब खुद देते हैं, ताकि भविष्य के गोगलर्स की मदद कर सकें। StackOverflow आपको प्रश्न और उत्तर एक साथ पोस्ट करने की अनुमति देता है।
धर्मट्रेल

1
मैंने इस तरह से अपने सभी स्थानीय डॉक्यूमेंटेशन करना शुरू कर दिया है। काफी सामान्य प्रश्न नहीं है, तो एसओ प्रश्नों की तरह। यानी मैं कैसे? या यह क्या है?
पॉल डायर

23

प्रयत्न:

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

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





3

इसे इस्तेमाल करे।

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");
        }
    }
}

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);
    }
}

0

इसे इस्तेमाल करे:

foreach (string files in Directory.GetFiles(SourcePath))
{
   FileInfo fileInfo = new FileInfo(files);
   fileInfo.Delete(); //delete the files first. 
}
Directory.Delete(SourcePath);// delete the directory as it is empty now.

हालांकि यह कोड प्रश्न का उत्तर दे सकता है, लेकिन समस्या को हल करने के तरीके के बारे में अतिरिक्त संदर्भ प्रदान करता है और यह समस्या को हल करता है ताकि उत्तर के दीर्घकालिक मूल्य में सुधार हो सके। इसे पढ़ें
शांतेश्वर Inde

0

आप उन लोगों के लिए जो DirectoryNotFoundException में चल रहे हैं, इस जाँच को जोड़ें:

if (Directory.Exists(path)) Directory.Delete(path, true);
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.