語言

Directory.Delete 方法

定義

刪除指定的目錄,並可選擇刪除任何子目錄。

多載

名稱 Description
Delete(String)

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

Delete(String, Boolean)

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

Delete(String)

來源:
Directory.cs
來源:
Directory.cs
來源:
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 與 .NET Core 版本 2.1 以前: path 為零長度字串、僅含空白,或包含一個或多個無效字元。 你可以用這個 GetInvalidPathChars() 方法查詢無效字元。

path 是 null。

指定的路徑、檔名或兩者都超過系統定義的最大長度。

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 的後方空格會被移除。

此方法會拋出參數 IOException 中指定的 path 目錄是否包含檔案或子目錄。

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

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

另請參閱

適用於

Delete(String, Boolean)

來源:
Directory.cs
來源:
Directory.cs
來源:
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

true 以移除目錄、子目錄及檔案; path否則, false。

例外狀況

存在一個名稱與位置 path 相同的檔案。

-或-

指定的 path 目錄是唯讀,或 recursive 是 false 空目錄,但 path 不是空目錄。

-或-

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

-或-

該目錄包含一個唯讀檔案。

-或-

該目錄被另一個程序使用。

來電者沒有所需的權限。

.NET Framework 與 .NET Core 版本 2.1 以前: path 為零長度字串、僅含空白,或包含一個或多個無效字元。 你可以用這個 GetInvalidPathChars() 方法查詢無效字元。

path 是 null。

指定的路徑、檔名或兩者都超過系統定義的最大長度。

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 方法可能無法刪除它。

另請參閱

適用於