Directory.Delete メソッド

定義

指定されたディレクトリとオプションでサブディレクトリを削除します。

オーバーロード

Delete(String)

指定されたパスから空のディレクトリを削除します。

Delete(String, Boolean)

指定したディレクトリと、特に指定されている場合はディレクトリ内の任意のサブディレクトリおよびファイルを削除します。

Delete(String)

ソース:
Directory.cs
ソース:
Directory.cs
ソース:
Directory.cs

指定されたパスから空のディレクトリを削除します。

public static void Delete (string path);

パラメーター

path
String

削除する空のディレクトリの名前。 このディレクトリは、書き込み可能で空である必要があります。

例外

path で指定された同じ名前と場所を持つファイルが存在します。

- または -

ディレクトリはアプリケーションの現在の作業ディレクトリです。

- または -

path によって指定されたディレクトリは空ではありません。

- または -

ディレクトリが読み取り専用になっているか、または読み取り専用のファイルが含まれています。

- または -

ディレクトリは別のプロセスによって使用されています。

呼び出し元に、必要なアクセス許可がありません。

.NET Framework バージョンと .NET Core バージョンが 2.1 より前の場合: path は長さ 0 の文字列、空白のみを含む、または無効な文字が 1 つ以上含まれています。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。

pathnullです。

指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。

path が存在しないか、見つかりませんでした。

- または -

指定されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。

次の例では、新しいディレクトリとサブディレクトリを作成し、サブディレクトリのみを削除する方法を示します。

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string subPath = @"C:\NewDirectory\NewSubDirectory";

            try
            {
                Directory.CreateDirectory(subPath);
                Directory.Delete(subPath);

                bool directoryExists = Directory.Exists(@"C:\NewDirectory");
                bool subDirectoryExists = Directory.Exists(subPath);

                Console.WriteLine("top-level directory exists: " + directoryExists);
                Console.WriteLine("sub-directory exists: " + subDirectoryExists);
            }
            catch (Exception e)
            {
                Console.WriteLine("The process failed: {0}", e.Message);
            }
        }
    }
}

注釈

このメソッドは、 と同じように動作し、 Delete(String, Boolean)false 2 番目のパラメーターに対して を指定します。

パラメーターには path 、相対パスまたは絶対パス情報を指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、「」を参照してください GetCurrentDirectory

末尾のスペースは、ディレクトリを削除する前に path 、 パラメーターの末尾から削除されます。

パラメーターで指定されたディレクトリにファイルまたはサブディレクトリが含まれている場合、pathこのメソッドは をスローIOExceptionします。

パラメーターの大文字と小文字の path 区別は、コードが実行されているファイル システムの大文字と小文字が区別されます。 たとえば、NTFS (既定の Windows ファイル システム) では大文字と小文字が区別されず、Linux ファイル システムでは大文字と小文字が区別されます。

場合によっては、指定したディレクトリを エクスプローラー で開いている場合、Deleteメソッドで削除できない場合があります。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Delete(String, Boolean)

ソース:
Directory.cs
ソース:
Directory.cs
ソース:
Directory.cs

指定したディレクトリと、特に指定されている場合はディレクトリ内の任意のサブディレクトリおよびファイルを削除します。

public static void Delete (string path, bool recursive);

パラメーター

path
String

削除するディレクトリの名前。

recursive
Boolean

path のディレクトリ、サブディレクトリ、およびファイルを削除する場合は true。それ以外の場合は false

例外

path で指定された同じ名前と場所を持つファイルが存在します。

- または -

path で指定されたディレクトリが読み取り専用です。または、recursivefalse であり、path は空のディレクトリではありません。

- または -

ディレクトリはアプリケーションの現在の作業ディレクトリです。

- または -

ディレクトリに読み取り専用のファイルが含まれています。

- または -

ディレクトリは別のプロセスによって使用されています。

呼び出し元に、必要なアクセス許可がありません。

.NET Framework バージョンと .NET Core バージョンが 2.1 より前の場合: path は長さ 0 の文字列、空白のみを含む、または無効な文字が 1 つ以上含まれています。 正しくない文字を照会するには、GetInvalidPathChars() メソッドを使用します。

pathnullです。

指定したパス、ファイル名、またはその両方がシステム定義の最大長を超えています。

path が存在しないか、見つかりませんでした。

- または -

指定されたパスが正しくありません (たとえば、マップされていないドライブにあるなど)。

次の例では、サブディレクトリに新しいディレクトリ、サブディレクトリ、およびファイルを作成し、新しい項目をすべて再帰的に削除する方法を示します。

using System;
using System.IO;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            string topPath = @"C:\NewDirectory";
            string subPath = @"C:\NewDirectory\NewSubDirectory";

            try
            {
                Directory.CreateDirectory(subPath);

                using (StreamWriter writer = File.CreateText(subPath + @"\example.txt"))
                {
                    writer.WriteLine("content added");
                }

                Directory.Delete(topPath, true);

                bool directoryExists = Directory.Exists(topPath);

                Console.WriteLine("top-level directory exists: " + directoryExists);
            }
            catch (Exception e)
            {
                Console.WriteLine("The process failed: {0}", e.Message);
            }
        }
    }
}

注釈

パラメーターには path 、相対パスまたは絶対パス情報を指定できます。 相対パス情報は、現在の作業ディレクトリに対する相対パスとして解釈されます。 現在の作業ディレクトリを取得するには、「」を参照してください GetCurrentDirectory

末尾のスペースは、ディレクトリを削除する前に path 、 パラメーターの末尾から削除されます。

パラメーターの大文字と小文字の path 区別は、コードが実行されているファイル システムの大文字と小文字が区別されます。 たとえば、NTFS (既定の Windows ファイル システム) では大文字と小文字が区別されず、Linux ファイル システムでは大文字と小文字が区別されます。

パラメーターが の recursive 場合、ユーザーは true現在のディレクトリとすべてのサブディレクトリに対する書き込みアクセス許可を持っている必要があります。

シンボリック リンクやマウント ポイントなど、再解析ポイントを含むディレクトリを削除すると、このメソッドの動作が若干異なります。 再解析ポイントがマウント ポイントなどのディレクトリである場合は、マウント解除され、マウント ポイントが削除されます。 このメソッドは、再解析ポイントを繰り返しません。 再解析ポイントがファイルへのシンボリック リンクである場合、再解析ポイントは削除され、シンボリック リンクのターゲットは削除されません。

場合によっては、指定したディレクトリを エクスプローラー で開いている場合、Deleteメソッドで削除できない場合があります。

こちらもご覧ください

適用対象

.NET 9 およびその他のバージョン
製品 バージョン
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0