Directory.CreateDirectory Метод

Определение

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

Перегрузки

CreateDirectory(String)

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

CreateDirectory(String, UnixFileMode)

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

CreateDirectory(String, DirectorySecurity)

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

CreateDirectory(String)

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

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 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\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");
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)

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

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;

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-пути; например, можно указать следующие параметры для path: \\2009\Archives\December в Visual Basic и \\\\2009\\Archives\\December В C#.

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

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