Directory.CreateDirectory Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Создает все каталоги по заданному пути.
Перегрузки
CreateDirectory(String) |
Создает все каталоги и подкаталоги по указанному пути, если они еще не существуют. |
CreateDirectory(String, UnixFileMode) |
Создает все каталоги и подкаталоги по указанному пути с указанными разрешениями, если они уже не существуют. |
CreateDirectory(String, DirectorySecurity) |
Создает все каталоги по указанному пути, если они еще не существуют, с применением заданных параметров безопасности Windows. |
CreateDirectory(String)
- Исходный код:
- 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
Каталог, который необходимо создать.
Возвращаемое значение
Объект, представляющий каталог по указанному пути. Этот объект возвращается вне зависимости от того, существует ли уже каталог по указанному пути.
Исключения
У вызывающего объекта отсутствует необходимое разрешение.
платформа .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 используйте косую черту (/) в качестве разделителя пути.
См. также раздел
- DirectoryInfo
- Файловый и потоковый ввод-вывод
- Практическое руководство. Чтение текста из файла
- Практическое руководство. Запись текста в файл
Применяется к
CreateDirectory(String, UnixFileMode)
- Исходный код:
- 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
Элемент управления доступом, который необходимо применить к каталогу.
Возвращаемое значение
Объект, представляющий каталог по указанному пути. Этот объект возвращается вне зависимости от того, существует ли уже каталог по указанному пути.
Исключения
У вызывающего объекта отсутствует необходимое разрешение.
платформа .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
исключение .