Directory.CreateDirectory Método

Definição

Cria todos os diretórios em um caminho especificado.

Sobrecargas

CreateDirectory(String)

Cria todos os diretórios e subdiretórios no caminho especificado, a menos que eles já existam.

CreateDirectory(String, UnixFileMode)

Cria todos os diretórios e subdiretórios no caminho especificado com as permissões especificadas, a menos que elas já existam.

CreateDirectory(String, DirectorySecurity)

Cria todos os diretórios no caminho especificado, a menos que eles já existam, aplicando a segurança do Windows especificada.

CreateDirectory(String)

Cria todos os diretórios e subdiretórios no caminho especificado, a menos que eles já existam.

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

Parâmetros

path
String

O diretório a ser criado.

Retornos

DirectoryInfo

Um objeto que representa o diretório no caminho especificado. Esse objeto é retornado, independentemente se já existir um diretório no caminho especificado.

Exceções

O diretório especificado por path é um arquivo.

- ou - O nome da rede não é conhecido.

O chamador não tem a permissão necessária.

.NET Framework e versões do .NET Core com mais de 2.1: path é uma cadeia de caracteres de comprimento zero, contém apenas espaço em branco ou contém um ou mais caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars().

- ou - path é prefixado ou contém somente um caractere de dois-pontos (:).

path é null.

O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.

O caminho especificado é inválido (por exemplo, ele está em uma unidade não mapeada).

path contém um caractere de dois-pontos (:) que não faz parte de um rótulo da unidade (“C:\”).

Exemplos

O exemplo a seguir cria e exclui o diretório especificado:

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

Para criar o diretório C:\Users\User1\Public\Html quando o diretório atual for C:\Users\User1, use qualquer uma das seguintes chamadas para garantir que a barra invertida seja interpretada corretamente:

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

Comentários

Todos os diretórios especificados são path criados, a menos que já existam ou a menos que alguma parte seja path inválida. Se o diretório já existir, esse método não criará um novo diretório, mas retornará um DirectoryInfo objeto para o diretório existente.

O path parâmetro especifica um caminho de diretório, não um caminho de arquivo.

Espaços à direita são removidos do final do path parâmetro antes de criar o diretório.

Você pode criar um diretório em um computador remoto, em um compartilhamento ao qual você tem acesso de gravação. Há suporte para caminhos UNC; por exemplo, você pode especificar o seguinte para path: \\2009\Archives\December no Visual Basic e \\\\2009\\Archives\\December em C#.

Criando um diretório com apenas o caractere de dois-pontos (:) não tem suporte e fará com que um NotSupportedException seja lançado.

Em sistemas Unix, use uma barra (/) como separador de caminho.

Confira também

Aplica-se a

CreateDirectory(String, UnixFileMode)

Cria todos os diretórios e subdiretórios no caminho especificado com as permissões especificadas, a menos que elas já existam.

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

Parâmetros

path
String

O diretório a ser criado.

unixCreateMode
UnixFileMode

Uma combinação bit a bit dos valores de enumeração que especifica o modo de arquivo Unix usado para criar diretórios.

Retornos

DirectoryInfo

Um objeto que representa o diretório no caminho especificado. Esse objeto é retornado, independentemente se já existir um diretório no caminho especificado.

Atributos

Exceções

path é uma cadeia de caracteres de comprimento zero ou contém um ou mais caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars().

path é null.

O modo de arquivo é inválido.

O chamador não tem a permissão necessária.

O caminho especificado excede o tamanho máximo definido pelo sistema.

path é um arquivo.

Um componente do path não é um diretório.

Aplica-se a

CreateDirectory(String, DirectorySecurity)

Cria todos os diretórios no caminho especificado, a menos que eles já existam, aplicando a segurança do Windows especificada.

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

Parâmetros

path
String

O diretório a ser criado.

directorySecurity
DirectorySecurity

O controle de acesso a ser aplicado ao diretório.

Retornos

DirectoryInfo

Um objeto que representa o diretório no caminho especificado. Esse objeto é retornado, independentemente se já existir um diretório no caminho especificado.

Exceções

O diretório especificado por path é um arquivo.

- ou - O nome da rede não é conhecido.

O chamador não tem a permissão necessária.

.NET Framework e versões do .NET Core anteriores à 2.1: path é uma cadeia de caracteres de comprimento zero, contém apenas espaço em branco ou contém um ou mais caracteres inválidos. Consulte caracteres inválidos usando o método GetInvalidPathChars().

- ou - path é prefixado ou contém somente um caractere de dois-pontos (:).

path é null.

O caminho especificado, o nome de arquivo, ou ambos excedem o tamanho máximo definido pelo sistema.

O caminho especificado é inválido (por exemplo, ele está em uma unidade não mapeada).

path contém um caractere de dois-pontos (:) que não faz parte de um rótulo da unidade (“C:\”).

Exemplos

O exemplo a seguir cria um novo diretório com regras de acesso para duas contas de usuário.

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

Comentários

Use essa sobrecarga de método para criar um diretório com controle de acesso, portanto, não há nenhuma chance de o diretório ser acessado antes que a segurança seja aplicada.

Todos os diretórios especificados no path parâmetro são criados, a menos que já existam ou a menos que alguma parte seja path inválida. O path parâmetro especifica um caminho de diretório, não um caminho de arquivo. Se o diretório já existir, esse método não criará um novo diretório, mas retornará um DirectoryInfo objeto para o diretório existente.

Espaços à direita são removidos do final do path parâmetro antes de criar o diretório.

Você pode criar um diretório em um computador remoto, em um compartilhamento ao qual você tem acesso de gravação. Há suporte para caminhos UNC; por exemplo, você pode especificar o seguinte para path: \\2009\Archives\December no Visual Basic e \\\\2009\\Archives\\December em C#.

Criando um diretório com apenas o caractere de dois-pontos (:) não tem suporte e faz com que um NotSupportedException seja lançado.

Aplica-se a