Directory.CreateDirectory 方法
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
创建指定路径中的所有目录。
重载
| 名称 | 说明 |
|---|---|
| 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
要创建的目录。
返回
一个对象,表示指定路径处的目录。 无论指定路径上的目录是否已存在,都会返回此对象。
例外
调用方没有所需的权限。
低于 2.1 的 .NET Framework 和 .NET Core 版本: 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\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() 查询无效字符。
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
要应用于目录的访问控制。
返回
一个对象,表示指定路径处的目录。 无论指定路径上的目录是否已存在,都会返回此对象。
例外
调用方没有所需的权限。
低于 2.1 的 .NET Framework 和 .NET Core 版本: 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。
创建仅包含冒号字符的目录(不支持:)并导致 NotSupportedException 引发。