Directory.CreateDirectory Метод

Определение

Создает все каталоги в указанном пути.

Перегрузки

Имя Описание
CreateDirectory(String)

Создает все каталоги и вложенные каталоги в указанном пути, если они еще не существуют.

CreateDirectory(String, UnixFileMode)

Создает все каталоги и вложенные каталоги в указанном пути с указанными разрешениями, если они еще не существуют.

CreateDirectory(String, DirectorySecurity)

Создает все каталоги в указанном пути, если они еще не существуют, применяя указанную безопасность Windows.

CreateDirectory(String)

Исходный код:
Directory.cs
Исходный код:
Directory.cs
Исходный код:
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 и .NET Core старше 2.1: 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\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");

Комментарии

Все и все каталоги, указанные в 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
Исходный код:
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().

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

Управление доступом, применяемое к каталогу.

Возвращаемое значение

Объект, представляющий каталог по указанному пути. Этот объект возвращается независимо от того, существует ли каталог по указанному пути.

Исключения

Каталог, указанный файлом path .

–или–

Имя сети не известно.

Вызывающий объект не имеет требуемого разрешения.

Версии .NET Framework и .NET Core старше 2.1: 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: \\2009\Archives\December в Visual Basic и \\\\2009\\Archives\\December в C#.

Создание каталога только с символом двоеточия (:) не поддерживается и вызывает NotSupportedException исключение.

Применяется к