Directory.CreateDirectory 方法

定義

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

多載

CreateDirectory(String)

在指定的路徑建立所有目錄和子目錄 (如果這些目錄尚不存在)。

CreateDirectory(String, UnixFileMode)

除非這些目錄已經存在,否則會使用指定的許可權,在指定的路徑中建立所有目錄和子目錄。

CreateDirectory(String, DirectorySecurity)

在指定的路徑中建立所有目錄 (如果尚不存在),同時套用指定的 Windows 安全性。

CreateDirectory(String)

來源:
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和 2.1 之前的 .NET Core 版本: path 是長度為零的字串、只包含空白字元,或包含一或多個無效字元。 您可以使用 GetInvalidPathChars() 方法查詢無效字元。

-或-

path 前面只具有或包含冒號字元 (:)。

pathnull

指定的路徑、檔案名稱,或兩者都超出系統定義的長度上限。

指定的路徑無效 (例如,它位於未對應的磁碟機上)。

path 包含不是磁碟機標籤 ("C:\") 一部分的冒號字元 (:)。

範例

下列範例會建立並刪除指定的目錄:

using namespace System;
using namespace System::IO;
int main()
{
   
   // Specify the directory you want to manipulate.
   String^ path = "c:\\MyDir";
   try
   {
      
      // Determine whether the directory exists.
      if ( Directory::Exists( path ) )
      {
         Console::WriteLine( "That path exists already." );
         return 0;
      }
      
      // Try to create the directory.
      DirectoryInfo^ di = 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 ( Exception^ e ) 
   {
      Console::WriteLine( "The process failed: {0}", e );
   }

}
using System;
using System.IO;

class Test
{
    public static void Main()
    {
        // Specify the directory you want to manipulate.
        string path = @"c:\MyDir";

        try
        {
            // Determine whether the directory exists.
            if (Directory.Exists(path))
            {
                Console.WriteLine("That path exists already.");
                return;
            }

            // Try to create the directory.
            DirectoryInfo di = 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 (Exception e)
        {
            Console.WriteLine("The process failed: {0}", e.ToString());
        }
        finally {}
    }
}
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\User1\Public\Html 時建立目錄 C:\Users\User1,請使用下列任一呼叫來確保反斜線正確解譯:

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");
Directory::CreateDirectory("Public\\Html");
Directory::CreateDirectory("\\Users\\User1\\Public\\Html");
Directory::CreateDirectory("c:\\Users\\User1\\Public\\Html");

備註

在 中 path 指定的任何和所有目錄都會建立,除非它們已經存在,或除非 的 path 某個部分無效。 如果目錄已經存在,這個方法就不會建立新的目錄,但它會 DirectoryInfo 傳回現有目錄的 物件。

參數 path 會指定目錄路徑,而不是檔案路徑。

在建立目錄之前,尾端空格會從 參數結尾 path 移除。

您可以在具有寫入權限的共用上,在遠端電腦上建立目錄。 支援 UNC 路徑;例如,您可以針對 指定下列專案 path\\2009\Archives\December 在 Visual Basic 和 \\\\2009\\Archives\\December C# 中。

不支援建立只有冒號字元的目錄, (:) ,而且會導致 NotSupportedException 擲回 。

在 Unix 系統上,使用正斜線 (/) 作為路徑分隔符號。

另請參閱

適用於

CreateDirectory(String, UnixFileMode)

來源:
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() 方法查詢無效字元。

pathnull

檔案模式無效。

呼叫端沒有必要的權限。

指定的路徑超過系統定義的最大長度。

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和 2.1 之前的 .NET Core 版本: path 是長度為零的字串、只包含空白字元,或包含一或多個無效字元。 您可以使用 GetInvalidPathChars() 方法查詢無效字元。

-或-

path 前面只具有或包含冒號字元 (:)。

pathnull

指定的路徑、檔案名稱,或兩者都超出系統定義的長度上限。

指定的路徑無效 (例如,它位於未對應的磁碟機上)。

path 包含不是磁碟機標籤 ("C:\") 一部分的冒號字元 (:)。

範例

下列範例會為兩個使用者帳戶建立具有存取規則的新目錄。

using System;
using System.IO;
using System.Security.AccessControl;

namespace ConsoleApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            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

Module Module1

    Sub Main()
        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 Module

備註

使用此方法多載來建立具有存取控制的目錄,因此在套用安全性之前,無法存取目錄。

除非參數中 path 指定的任何目錄和所有目錄已經存在,或部分 的 path 目錄無效,否則會建立。 參數 path 會指定目錄路徑,而不是檔案路徑。 如果目錄已經存在,這個方法就不會建立新的目錄,但它會 DirectoryInfo 傳回現有目錄的 物件。

在建立目錄之前,尾端空格會從 參數結尾 path 移除。

您可以在具有寫入權限的共用上,在遠端電腦上建立目錄。 支援 UNC 路徑;例如,您可以針對 指定下列專案 path\\2009\Archives\December 在 Visual Basic 和 \\\\2009\\Archives\\December C# 中。

不支援只使用冒號字元建立目錄, (:) ,並會導致 NotSupportedException 擲回 。

適用於