Directory.CreateDirectory 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
建立指定路徑上的所有目錄。
多載
| 名稱 | Description |
|---|---|
| CreateDirectory(String) |
建立指定路徑中的所有目錄和子目錄,除非它們已經存在。 |
| CreateDirectory(String, UnixFileMode) |
在指定路徑中建立所有目錄和子目錄,並附上指定權限,除非它們已經存在。 |
| CreateDirectory(String, DirectorySecurity) |
建立指定路徑中的所有目錄,除非已存在,並套用指定的 Windows 安全性。 |
CreateDirectory(String)
- 來源:
- Directory.cs
- 來源:
- Directory.cs
- 來源:
- Directory.cs
- 來源:
- Directory.cs
- 來源:
- Directory.cs
建立指定路徑中的所有目錄和子目錄,除非它們已經存在。
public:
static System::IO::DirectoryInfo ^ CreateDirectory(System::String ^ path);
public static System.IO.DirectoryInfo CreateDirectory(string path);
static member CreateDirectory : string -> System.IO.DirectoryInfo
Public Shared Function CreateDirectory (path As String) As DirectoryInfo
參數
- path
- String
要建立目錄。
傳回
一個代表指定路徑目錄的物件。 無論指定路徑上的目錄是否已存在,都會回傳這個物件。
例外狀況
來電者沒有所需的權限。
.NET Framework 與 .NET Core 版本 2.1 以前: path 為零長度字串、僅含空白,或包含一個或多個無效字元。 你可以用這個 GetInvalidPathChars() 方法查詢無效字元。
-或-
path 僅以冒號字元(:) 作為前綴或包含。
path 是 null。
指定的路徑、檔名或兩者都超過系統定義的最大長度。
指定的路徑無效(例如,它位於未對應的磁碟驅動器上)。
path 包含一個冒號字元(:),且非磁碟機標籤的一部分(「C:\」)。
範例
以下範例用於建立並刪除指定的目錄:
using System;
using System.IO;
class Test
{
public static void Main()
{
// Specify the directory you want to manipulate.
string path = @"c:\MyDir";
// Determine whether the directory exists.
if (Directory.Exists(path))
{
Console.WriteLine("That path exists already.");
return;
}
DirectoryInfo di;
try
{
// Try to create the directory.
di = Directory.CreateDirectory(path);
Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path));
}
catch (UnauthorizedAccessException e)
{
Console.WriteLine("The caller does not have the required permission to create `{0}`", path);
return;
}
// Delete the directory.
di.Delete();
Console.WriteLine("The directory was deleted successfully.");
}
}
open System.IO
// Specify the directory you want to manipulate.
let path = @"c:\MyDir"
try
// Determine whether the directory exists.
if Directory.Exists path then
printfn "That path exists already."
else
// Try to create the directory.
let di = Directory.CreateDirectory path
printfn $"The directory was created successfully at {Directory.GetCreationTime path}."
// Delete the directory.
di.Delete()
printfn "The directory was deleted successfully."
with e ->
printfn $"The process failed: {e}"
Imports System.IO
Public Class Test
Public Shared Sub Main()
' Specify the directory you want to manipulate.
Dim path As String = "c:\MyDir"
Try
' Determine whether the directory exists.
If Directory.Exists(path) Then
Console.WriteLine("That path exists already.")
Return
End If
' Try to create the directory.
Dim di As DirectoryInfo = Directory.CreateDirectory(path)
Console.WriteLine("The directory was created successfully at {0}.", Directory.GetCreationTime(path))
' Delete the directory.
di.Delete()
Console.WriteLine("The directory was deleted successfully.")
Catch e As Exception
Console.WriteLine("The process failed: {0}.", e.ToString())
End Try
End Sub
End Class
當目前目錄為 C:\Users\User\User1 時,要建立目錄 C:\Users\User1\Public\Html,請使用以下任一呼叫以確保反斜線被正確解讀:
Directory.CreateDirectory("Public\Html")
Directory.CreateDirectory("\Users\User1\Public\Html")
Directory.CreateDirectory("c:\Users\User1\Public\Html")
Directory.CreateDirectory("Public\\Html");
Directory.CreateDirectory("\\Users\\User1\\Public\\Html");
Directory.CreateDirectory("c:\\Users\\User1\\Public\\Html");
備註
所有指定的 path 目錄都會被建立,除非它們已經存在或其中某些部分 path 無效。 如果該目錄已經存在,此方法不會建立新目錄,而是回傳 DirectoryInfo 現有目錄的物件。
該 path 參數指定的是目錄路徑,而非檔案路徑。
在建立目錄前,參數末尾 path 的後方空格會被移除。
你可以在遠端電腦上建立目錄,在你有寫入權限的共享資料夾上。 支援UNC的路徑;例如,你可以為 path 指定如下:Visual Basic 中的 \\2009\Archives\December,C# 中的 \\\\2009\\Archives\\December。
不支援只建立冒號字元(:) 的目錄,會導致拋出 a NotSupportedException 。
在 Unix 系統上,使用斜線(/)作為路徑分隔符。
另請參閱
適用於
CreateDirectory(String, UnixFileMode)
- 來源:
- Directory.cs
- 來源:
- Directory.cs
- 來源:
- Directory.cs
- 來源:
- Directory.cs
- 來源:
- Directory.cs
在指定路徑中建立所有目錄和子目錄,並附上指定權限,除非它們已經存在。
public:
static System::IO::DirectoryInfo ^ CreateDirectory(System::String ^ path, System::IO::UnixFileMode unixCreateMode);
[System.Runtime.Versioning.UnsupportedOSPlatform("windows")]
public static System.IO.DirectoryInfo CreateDirectory(string path, System.IO.UnixFileMode unixCreateMode);
[<System.Runtime.Versioning.UnsupportedOSPlatform("windows")>]
static member CreateDirectory : string * System.IO.UnixFileMode -> System.IO.DirectoryInfo
Public Shared Function CreateDirectory (path As String, unixCreateMode As UnixFileMode) As DirectoryInfo
參數
- path
- String
要建立目錄。
- unixCreateMode
- UnixFileMode
一個位元組合列舉值,指定用於建立目錄的 Unix 檔案模式。
傳回
一個代表指定路徑目錄的物件。 無論指定路徑上的目錄是否已存在,都會回傳這個物件。
- 屬性
例外狀況
path 是零長度字串,或包含一個或多個無效字元。 你可以用這個 GetInvalidPathChars() 方法查詢無效字元。
path 是 null。
檔案模式無效。
來電者沒有所需的權限。
指定的路徑超過系統定義的最大長度。
path 是一個檔案。
其中 path 的元件不是目錄。
適用於
CreateDirectory(String, DirectorySecurity)
建立指定路徑中的所有目錄,除非已存在,並套用指定的 Windows 安全性。
public:
static System::IO::DirectoryInfo ^ CreateDirectory(System::String ^ path, System::Security::AccessControl::DirectorySecurity ^ directorySecurity);
public static System.IO.DirectoryInfo CreateDirectory(string path, System.Security.AccessControl.DirectorySecurity directorySecurity);
static member CreateDirectory : string * System.Security.AccessControl.DirectorySecurity -> System.IO.DirectoryInfo
Public Shared Function CreateDirectory (path As String, directorySecurity As DirectorySecurity) As DirectoryInfo
參數
- path
- String
要建立目錄。
- directorySecurity
- DirectorySecurity
存取控制套用到目錄。
傳回
一個代表指定路徑目錄的物件。 無論指定路徑上的目錄是否已存在,都會回傳這個物件。
例外狀況
來電者沒有所需的權限。
.NET Framework 與 .NET Core 版本 2.1 以前: path 為零長度字串、僅含空白,或包含一個或多個無效字元。 你可以用這個 GetInvalidPathChars() 方法查詢無效字元。
-或-
path 僅以冒號字元(:) 作為前綴或包含。
path 是 null。
指定的路徑、檔名或兩者都超過系統定義的最大長度。
指定的路徑無效(例如,它位於未對應的磁碟驅動器上)。
path 包含一個冒號字元(:),且非磁碟機標籤的一部分(「C:\」)。
範例
以下範例為兩個使用者帳號建立一個新的目錄,並使用存取規則。
using System;
using System.IO;
using System.Security.AccessControl;
partial class Program
{
static void DirectorySecurityExample()
{
DirectorySecurity securityRules = new DirectorySecurity();
securityRules.AddAccessRule(new FileSystemAccessRule(@"Domain\account1", FileSystemRights.Read, AccessControlType.Allow));
securityRules.AddAccessRule(new FileSystemAccessRule(@"Domain\account2", FileSystemRights.FullControl, AccessControlType.Allow));
DirectoryInfo di = Directory.CreateDirectory(@"C:\destination\NewDirectory", securityRules);
}
}
open System.IO
open System.Security.AccessControl
let securityRules = DirectorySecurity()
securityRules.AddAccessRule(FileSystemAccessRule(@"Domain\account1", FileSystemRights.Read, AccessControlType.Allow))
securityRules.AddAccessRule(FileSystemAccessRule(@"Domain\account2", FileSystemRights.FullControl, AccessControlType.Allow))
let di = Directory.CreateDirectory(@"C:\destination\NewDirectory", securityRules)
Imports System.IO
Imports System.Security.AccessControl
Partial Class Program
Shared Sub DirectorySecurityExample()
Dim securityRules As DirectorySecurity = New DirectorySecurity()
securityRules.AddAccessRule(New FileSystemAccessRule("Domain\account1", FileSystemRights.Read, AccessControlType.Allow))
securityRules.AddAccessRule(New FileSystemAccessRule("Domain\account2", FileSystemRights.FullControl, AccessControlType.Allow))
Dim di As DirectoryInfo = Directory.CreateDirectory("C:\destination\NewDirectory", securityRules)
End Sub
End Class
備註
利用此方法超載建立帶有存取控制的目錄,確保在安全措施生效前無法被存取。
參數中指定的所有目錄 path 都會被建立,除非它們已經存在或其中 path 某些部分無效。 該 path 參數指定的是目錄路徑,而非檔案路徑。 如果該目錄已經存在,此方法不會建立新目錄,而是回傳 DirectoryInfo 現有目錄的物件。
在建立目錄前,參數末尾 path 的後方空格會被移除。
你可以在遠端電腦上建立目錄,在你有寫入權限的共享資料夾上。 支援UNC的路徑;例如,你可以為 path 指定如下:Visual Basic 中的 \\2009\Archives\December,C# 中的 \\\\2009\\Archives\\December。
只用冒號字元(:)建立目錄不支援,會導致拋出 a NotSupportedException 。