C # menghapus folder dan semua file dan folder di dalam folder itu


104

Saya mencoba menghapus folder dan semua file dan folder di dalam folder itu, saya menggunakan kode di bawah ini dan saya mendapatkan kesalahan Folder is not empty, ada saran tentang apa yang dapat saya lakukan?

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

Jawaban:



111

Baca Manual:

Metode Directory.Delete (String, Boolean)

Directory.Delete(folderPath, true);

68
Mengapa membaca manual ketika lebih cepat google dan berakhir di sini?
reggaeguitar

5
Ini sangat benar
Corvin

4
Memang ... hanya googled ini, dan posting ini adalah hasil pertama dari google.
MasterN8

2
Yang terkadang saya lakukan adalah mengajukan pertanyaan dan menjawabnya sendiri, untuk membantu calon karyawan Google. StackOverflow memungkinkan Anda memposting pertanyaan dan jawaban secara bersamaan.
DharmaTurtle

1
Saya sudah mulai melakukan semua dokumentasi lokal saya dengan cara ini. Bukan FAQ, lebih seperti pertanyaan SO. yaitu Bagaimana saya? atau Apa ini?
Paul Duer

23

Mencoba:

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

Ini akan secara rekursif menghapus semua file dan folder di bawah "jalur" dengan asumsi Anda memiliki izin untuk melakukannya.





3

Coba ini.

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

Coba ini:

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.

Meskipun kode ini dapat menjawab pertanyaan, memberikan konteks tambahan tentang bagaimana dan / atau mengapa kode ini memecahkan masalah akan meningkatkan nilai jangka panjang jawaban. Baca ini
Shanteshwar Inde

0

Bagi Anda yang mengalami DirectoryNotFoundException, tambahkan pemeriksaan ini:

if (Directory.Exists(path)) Directory.Delete(path, true);
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.