How to Delete a Folder with Subfolders and Files in C#?

Do you need to delete a folder with subfolders and files in C#? Check out this complete tutorial; I have explained how to delete a folder with subfolders and files in C# using various methods.

Delete a Folder with Subfolders and Files in C#

I will show you here how to use three methods, including using the Directory class from the System.IO namespace and the DirectoryInfo class to delete a folder with subfolders and files in C#.

1. Delete a Folder with Subfolders and Files in C# using the Directory Class

The Directory class provides a simple and straightforward way to delete a directory along with all its subfolders and files. The method Directory.Delete(string path, bool recursive) takes in the path of the folder and a boolean value indicating whether the operation should be recursive (i.e., also delete subfolders and files).

Here is a complete example of deleting folders, subfolders, and files in C#.

using System;
using System.IO;

class Program
{
    static void Main()
    {
        string folderPath = @"C:\path\to\your\folder";
        
        try
        {
            Directory.Delete(folderPath, true);
            Console.WriteLine("Folder deleted successfully.");
        }
        catch (IOException e)
        {
            Console.WriteLine($"An error occurred: {e.Message}");
        }
    }
}

Note: Make sure that the folder and its contents are not in use by another program. Otherwise, an IOException will be thrown.

Once you run the code, you can see the output in the screenshot below:

2. Delete a Folder with Subfolders and Files Using DirectoryInfo in C#

We can also use the DirectoryInfo class to delete a folder with subfolders with files in C#.

The DirectoryInfo class allows you to encapsulate the information of a directory, giving you various methods to manipulate it. One of those methods is Delete(bool recursive).

  • Delete(): Deletes the directory.
  • Delete(true): Deletes the directory and, if it has any, all its contents (subdirectories and files).

By passing true as an argument to Delete(), you enable the method to delete all subdirectories and files recursively.

Recursive deletion is the process of deleting a folder and its contents, including all subfolders and their contents. This is a common operation in file management systems, and the DirectoryInfo class makes it simple by allowing a true parameter in its Delete method to enable recursive deletion.

dirInfo.Delete(true);

Here’s the complete code example for deleting a folder, along with its subfolders and files, using the DirectoryInfo class:

using System;
using System.IO;

class Program
{
    static void Main()
    {
        // Define the folder path
        string folderPath = @"C:\path\to\your\folder";
        
        try
        {
            // Initialize DirectoryInfo
            DirectoryInfo dirInfo = new DirectoryInfo(folderPath);
            
            // Check if the folder exists
            if (dirInfo.Exists)
            {
                // Delete the folder and all its contents
                dirInfo.Delete(true);
                Console.WriteLine("Folder, along with its subfolders and files, deleted successfully.");
            }
            else
            {
                Console.WriteLine("The specified directory does not exist.");
            }
        }
        catch (IOException e)
        {
            Console.WriteLine($"An error occurred: {e.Message}");
        }
    }
}

By using this approach, you ensure that the entire folder hierarchy gets deleted in a single operation, which makes the DirectoryInfo class a powerful tool for this purpose.

Once you run the code, it will delete all the folders, subfolders and files; you can see the screenshot below:

how to delete folder with subfolders and files in C#

3. Delete Asynchronously using a custom method

You can also create your method to delete folders and subfolders in C# asynchronously.

using System;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        string folderPath = @"C:\path\to\your\folder";
        
        await DeleteFolderAsync(folderPath);
    }

    static async Task DeleteFolderAsync(string folderPath)
    {
        await Task.Run(() =>
        {
            try
            {
                Directory.Delete(folderPath, true);
                Console.WriteLine("Folder deleted successfully.");
            }
            catch (IOException e)
            {
                Console.WriteLine($"An error occurred: {e.Message}");
            }
        });
    }
}

The above method will delete a folder along with its subfolders and files in C#.

Conclusion

In this C# tutorial, I have explained three different methods to delete a folder along with its subfolders and files in C#. These methods include using the Directory class, using the DirectoryInfo class, and performing the operation asynchronously.

For most straightforward tasks, the Directory class is sufficient. If you need more control over the deletion process, DirectoryInfo would be more suitable. For performance-critical applications, consider implementing asynchronous deletion.

You may like the following tutorials: