語言

Directory.CreateDirectory 方法

定義

建立指定路徑上的所有目錄。

多載

名稱 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

要建立目錄。

傳回

一個代表指定路徑目錄的物件。 無論指定路徑上的目錄是否已存在,都會回傳這個物件。

例外狀況

由 path 指定的目錄是一個檔案。

-或-

該網絡名稱不詳。

來電者沒有所需的權限。

.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

存取控制套用到目錄。

傳回

一個代表指定路徑目錄的物件。 無論指定路徑上的目錄是否已存在,都會回傳這個物件。

例外狀況

由 path 指定的目錄是一個檔案。

-或-

該網絡名稱不詳。

來電者沒有所需的權限。

.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 。

適用於