Directory.Delete 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
刪除指定的目錄和選擇性地刪除任何子目錄。
多載
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() 方法查詢無效字元。
path
為 null
。
指定的路徑、檔案名稱,或兩者都超出系統定義的長度上限。
範例
下列範例示範如何建立新的目錄和子目錄,然後只刪除子目錄。
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
所指定的目錄是唯讀,或 recursive
是 false
,而 path
不是空目錄。
-或-
目錄是應用程式目前的工作目錄。
-或-
目錄包含唯讀檔案。
-或-
其他處理序正在使用此目錄。
呼叫端沒有必要的權限。
.NET Framework和 2.1 之前的 .NET Core 版本: path
是長度為零的字串、只包含空白字元,或包含一或多個無效字元。 您可以使用 GetInvalidPathChars() 方法查詢無效字元。
path
為 null
。
指定的路徑、檔案名稱,或兩者都超出系統定義的長度上限。
範例
下列範例示範如何在子目錄中建立新的目錄、子目錄和檔案,然後以遞迴方式刪除所有新專案。
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 可能無法刪除它。
另請參閱
適用於
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應