Directory.CreateDirectory 方法  
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在指定路径中创建所有目录。
重载
| 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
 
要创建的目录。
返回
一个表示在指定路径的目录的对象。 无论指定路径的目录是否已经存在,都将返回此对象。
例外
调用方没有所要求的权限。
.NET Framework 和 2.1 之前的 .NET Core 版本:path是一个零长度字符串,仅包含空格,或者包含一个或多个无效字符。 你可以使用 GetInvalidPathChars() 方法查询无效字符。
- 或 -
              path 的前缀仅为(或只包含)一个冒号字符 (:)。
              path 为 null。
指定的路径和/或文件名超过了系统定义的最大长度。
指定的路径无效(例如,它位于未映射的驱动器上)。
              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() 方法查询无效字符。
              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 和 2.1 之前的 .NET Core 版本:path是一个零长度字符串,仅包含空格,或者包含一个或多个无效字符。 你可以使用 GetInvalidPathChars() 方法查询无效字符。
- 或 -
              path 的前缀仅为(或只包含)一个冒号字符 (:)。
              path 为 null。
指定的路径和/或文件名超过了系统定义的最大长度。
指定的路径无效(例如,它位于未映射的驱动器上)。
              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 引发 。