Directory.CreateDirectory 方法

定义

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

重载

名称 说明
CreateDirectory(String)

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

CreateDirectory(String, UnixFileMode)

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

CreateDirectory(String, DirectorySecurity)

创建指定路径中的所有目录,除非它们已存在,否则应用指定的 Windows 安全性。

CreateDirectory(String)

Source:
Directory.cs
Source:
Directory.cs
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 目录是一个文件。

-或-

网络名称未知。

调用方没有所需的权限。

低于 2.1 的 .NET Framework 和 .NET Core 版本: path 是长度为零的字符串,仅包含空格,或包含一个或多个无效字符。 可以使用该方法 GetInvalidPathChars() 查询无效字符。

-或-

path 以冒号字符(:))为前缀(或包含)。

pathnull

指定的路径、文件名或两者都超过了系统定义的最大长度。

指定的路径无效(例如,它位于未映射的驱动器上)。

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\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

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

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

另请参阅

适用于

CreateDirectory(String, UnixFileMode)

Source:
Directory.cs
Source:
Directory.cs
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 目录是一个文件。

-或-

网络名称未知。

调用方没有所需的权限。

低于 2.1 的 .NET Framework 和 .NET Core 版本: path 是长度为零的字符串,仅包含空格,或包含一个或多个无效字符。 可以使用该方法 GetInvalidPathChars() 查询无效字符。

-或-

path 以冒号字符(:))为前缀(或包含)。

pathnull

指定的路径、文件名或两者都超过了系统定义的最大长度。

指定的路径无效(例如,它位于未映射的驱动器上)。

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

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

适用于