Directory.Delete 方法

定義

刪除指定的目錄和選擇性地刪除任何子目錄。

多載

Delete(String)

從指定的路徑刪除空目錄。

Delete(String, Boolean)

刪除指定目錄,並且若有指示,則刪除目錄中的任何子目錄和檔案。

Delete(String)

來源:
Directory.cs
來源:
Directory.cs
來源:
Directory.cs

從指定的路徑刪除空目錄。

public:
 static void Delete(System::String ^ path);
public static void Delete (string path);
static member Delete : string -> unit
Public Shared Sub Delete (path As String)

參數

path
String

要移除的空目錄名稱。 這個目錄必須為可寫入的和空的。

例外狀況

path 所指定名稱和位置相同的檔案存在。

-或-

目錄是應用程式目前的工作目錄。

-或-

path 指定的目錄不是空的。

-或-

目錄是唯讀的或包含唯讀檔案。

-或-

其他處理序正在使用此目錄。

呼叫端沒有必要的權限。

.NET Framework和 2.1 之前的 .NET Core 版本: path 是長度為零的字串、只包含空白字元,或包含一或多個無效字元。 您可以使用 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);
            }
        }
    }
}
open System.IO

let subPath = @"C:\NewDirectory\NewSubDirectory"

try
    Directory.CreateDirectory subPath |> ignore
    Directory.Delete subPath

    let directoryExists = Directory.Exists @"C:\NewDirectory"
    let subDirectoryExists = Directory.Exists subPath

    printfn $"top-level directory exists: {directoryExists}"
    printfn $"sub-directory exists: {subDirectoryExists}"
with e ->
    printfn $"The process failed: {e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim subPath = "C:\NewDirectory\NewSubDirectory"

        Try
            Directory.CreateDirectory(subPath)
            Directory.Delete(subPath)

            Dim directoryExists = Directory.Exists("C:\NewDirectory")
            Dim subDirectoryExists = Directory.Exists(subPath)

            Console.WriteLine("top-level directory exists: " & directoryExists)
            Console.WriteLine("sub-directory exists: " & subDirectoryExists)

        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.Message)
        End Try
    End Sub

End Module

備註

這個方法的行為與 Delete(String, Boolean)false 針對第二個參數指定的 相同。

參數 path 可以指定相對或絕對路徑資訊。 相對路徑資訊會解譯為相對於目前工作目錄。 若要取得目前的工作目錄,請參閱 GetCurrentDirectory

刪除目錄之前,會先從參數結尾移除尾端 path 空格。

如果 參數中指定的目錄包含檔案或子目錄, path 這個方法會擲回 IOException

參數的 path 區分大小寫會對應至程式碼執行所在的檔案系統。 例如,在 NTFS 上不區分大小寫 (預設 Windows 檔案系統) 和 Linux 檔案系統上區分大小寫。

在某些情況下,如果您在 檔案總管 中開啟指定的目錄,方法 Delete 可能無法刪除它。

另請參閱

適用於

Delete(String, Boolean)

來源:
Directory.cs
來源:
Directory.cs
來源:
Directory.cs

刪除指定目錄,並且若有指示,則刪除目錄中的任何子目錄和檔案。

public:
 static void Delete(System::String ^ path, bool recursive);
public static void Delete (string path, bool recursive);
static member Delete : string * bool -> unit
Public Shared Sub Delete (path As String, recursive As Boolean)

參數

path
String

要移除的目錄名稱。

recursive
Boolean

若要移除 path 中的目錄、子目錄和檔案,則為 true;否則為 false

例外狀況

path 所指定名稱和位置相同的檔案存在。

-或-

path 所指定的目錄是唯讀,或 recursivefalse,而 path 不是空目錄。

-或-

目錄是應用程式目前的工作目錄。

-或-

目錄包含唯讀檔案。

-或-

其他處理序正在使用此目錄。

呼叫端沒有必要的權限。

.NET Framework和 2.1 之前的 .NET Core 版本: path 是長度為零的字串、只包含空白字元,或包含一或多個無效字元。 您可以使用 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);
            }
        }
    }
}
open System.IO

let topPath = @"C:\NewDirectory"
let subPath = @"C:\NewDirectory\NewSubDirectory"

try
    Directory.CreateDirectory(subPath) |> ignore

    do
        use writer = File.CreateText(subPath + @"\example.txt")
        writer.WriteLine "content added"

    Directory.Delete(topPath, true)

    let directoryExists = Directory.Exists topPath

    printfn $"top-level directory exists: {directoryExists}"
    
with e ->
    printfn $"The process failed: {e.Message}"
Imports System.IO

Module Module1

    Sub Main()
        Dim topPath = "C:\NewDirectory"
        Dim subPath = "C:\NewDirectory\NewSubDirectory"

        Try
            Directory.CreateDirectory(subPath)

            Using writer As StreamWriter = File.CreateText(subPath + "\example.txt")
                writer.WriteLine("content added")
            End Using

            Directory.Delete(topPath, True)

            Dim directoryExists = Directory.Exists(topPath)

            Console.WriteLine("top-level directory exists: " & directoryExists)
        Catch e As Exception
            Console.WriteLine("The process failed: {0}", e.Message)
        End Try
    End Sub

End Module

備註

參數 path 可以指定相對或絕對路徑資訊。 相對路徑資訊會解譯為相對於目前工作目錄。 若要取得目前的工作目錄,請參閱 GetCurrentDirectory

刪除目錄之前,會先從參數結尾移除尾端 path 空格。

參數的 path 區分大小寫會對應至程式碼執行所在的檔案系統。 例如,在 NTFS 上不區分大小寫 (預設 Windows 檔案系統) 和 Linux 檔案系統上區分大小寫。

recursive如果 參數為 true ,則使用者必須具有目前目錄的寫入權限,以及所有子目錄的寫入權限。

刪除包含重新分析點的目錄時,此方法的行為稍有不同,例如符號連結或掛接點。 如果重新分析點是目錄,例如掛接點,則會取消掛接,並刪除掛接點。 這個方法不會透過重新分析點遞迴。 如果重新分析點是檔案的符號連結,則會刪除重新分析點,而不是符號連結的目標。

在某些情況下,如果您在 檔案總管 中開啟指定的目錄,方法 Delete 可能無法刪除它。

另請參閱

適用於