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