Windows apps
Collapse the table of content
Expand the table of content
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

Directory.Delete Method (String, Boolean)

Deletes the specified directory and, if indicated, any subdirectories in the directory.

Namespace: System.IO
Assembly: mscorlib (in mscorlib.dll)

static void Delete (
	String^ path, 
	bool recursive
public static void Delete (
	String path, 
	boolean recursive
public static function Delete (
	path : String, 
	recursive : boolean
Not applicable.



The name of the directory to remove.


true to remove directories, subdirectories, and files in path; otherwise, false.

Exception typeCondition


A file with the same name and location specified by path exists.


The directory specified by path is read-only, or recursive is false and path is not an empty directory.


The directory is the application's current working directory.


The caller does not have the required permission.


path is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.


path is a null reference (Nothing in Visual Basic).


The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters and file names must be less than 260 characters.


The specified path does not exist or could not be found.


The specified path is invalid (for example, it is on an unmapped drive).

The path parameter is permitted to specify relative or absolute path information. Relative path information is interpreted as relative to the current working directory. To obtain the current working directory, see GetCurrentDirectory.

The path parameter is not case-sensitive.

If the recursive parameter is true, the user must have Write permission for the current directory, as well as for all subdirectories.

The behavior of this method differs slightly when deleting a directory that contains a reparse point, such as a symbolic link or a mount point. If the reparse point is a directory, such as a mount point, it is unmounted and the mount point is deleted. This method does not recurse through the reparse point. If the reparse point is a symbolic link to a file, the reparse point is deleted and not the target of the symbolic link.

For a list of common I/O tasks, see Common I/O Tasks.

Windows Mobile 2003 for Pocket PC, Windows Mobile 2003 for Smartphone, Windows CE Platform Note: Some device file systems do not support relative paths. Specify absolute path information.

The following code example creates and deletes the specified directory and subdirectories.

using namespace System;
using namespace System::IO;
int main()
   // Specify the directories you want to manipulate.
   String^ path = "c:\\MyDir";
   String^ subPath = "c:\\MyDir\\temp";
      // Determine whether the directory exists.
      if (  !Directory::Exists( path ) )
         // Create the directory.
         Directory::CreateDirectory( path );
      if (  !Directory::Exists( subPath ) )
         // Create the directory.
         Directory::CreateDirectory( subPath );
      // This will succeed because subdirectories are being deleted.
      Console::WriteLine( "I am about to attempt to delete {0}", path );
      Directory::Delete( path, true );
      Console::WriteLine( "The Delete operation was successful." );
   catch ( Exception^ e ) 
      Console::WriteLine( "The process failed: {0}", e );


import System.*;
import System.IO.*;

class Test
    public static void main(String[] args)
        // Specify the directories you want to manipulate.
        String path = "c:\\MyDir";
        String subPath = "c:\\MyDir\\temp";

        try {
            // Determine whether the directory exists.
            if (!(Directory.Exists(path))) {
                // Create the directory.

            if (!(Directory.Exists(subPath))) {
                // Create the directory.

            // This will succeed because subdirectories are being deleted.
            Console.WriteLine("I am about to attempt to delete {0}", path);
            Directory.Delete(path, true);
            Console.WriteLine("The Delete operation was successful.");
        catch (System.Exception e) {
            Console.WriteLine("The process failed: {0}", e.ToString());
        finally {
    } //main
} //Test

Windows 98, Windows Server 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The Microsoft .NET Framework 3.0 is supported on Windows Vista, Microsoft Windows XP SP2, and Windows Server 2003 SP1.

.NET Framework

Supported in: 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0

XNA Framework

Supported in: 1.0

Community Additions

© 2017 Microsoft