Directory.CreateDirectory 方法

定义

在指定路径中创建所有目录。

重载

CreateDirectory(String)

在指定路径中创建所有目录和子目录,除非它们已经存在。

CreateDirectory(String, UnixFileMode)

在具有指定权限的指定路径中创建所有目录和子目录,除非它们已经存在。

CreateDirectory(String, DirectorySecurity)

在指定路径中创建所有目录(除非已存在),并应用指定的 Windows 安全性。

CreateDirectory(String)

Source:
Directory.cs
Source:
Directory.cs
Source:
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 时 创建目录 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");
Directory::CreateDirectory("Public\\Html");
Directory::CreateDirectory("\\Users\\User1\\Public\\Html");
Directory::CreateDirectory("c:\\Users\\User1\\Public\\Html");

注解

将创建 中 path 指定的任何目录和所有目录,除非它们已存在,或者除非 的 path 某个部分无效。 如果目录已存在,则此方法不会创建新目录,但会返回 DirectoryInfo 现有目录的 对象。

参数 path 指定目录路径,而不是文件路径。

创建目录之前, path 将从参数末尾删除尾随空格。

可以在远程计算机上,在具有写入访问权限的共享上创建目录。 支持 UNC 路径;例如,可以在 Visual Basic 中和 \\\\2009\\Archives\\December C# 中为 path\\2009\Archives\December 指定以下内容。

不支持创建仅包含冒号字符 (:) 的目录,这将导致 NotSupportedException 引发 。

在 Unix 系统上,使用 /) (正斜杠作为路径分隔符。

另请参阅

适用于

CreateDirectory(String, UnixFileMode)

Source:
Directory.cs
Source:
Directory.cs
Source:
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 路径;例如,可以在 Visual Basic 中和 \\\\2009\\Archives\\December C# 中为 path\\2009\Archives\December 指定以下内容。

不支持创建仅包含冒号字符 (:) 的目录,这会导致 NotSupportedException 引发 。

适用于