Directory.CreateDirectory 메서드

정의

지정된 경로에 모든 디렉터리를 만듭니다.

오버로드

CreateDirectory(String)

이미 존재하지 않는 한 지정된 경로에 모든 디렉터리와 하위 디렉터리를 만듭니다.

CreateDirectory(String, UnixFileMode)

지정된 권한이 없는 한 지정된 경로에 있는 모든 디렉터리와 하위 디렉터리를 만듭니다.

CreateDirectory(String, DirectorySecurity)

이미 존재하지 않는 경우 지정된 경로에 모든 디렉터리를 만들고 지정된 Windows 보안을 적용합니다.

CreateDirectory(String)

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

만들 디렉터리입니다.

반환

지정된 경로에서 디렉터리를 나타내는 개체입니다. 이 개체는 지정된 경로에 디렉터리가 이미 존재하는지 여부와 관계없이 반환됩니다.

예외

path에 의해 지정된 디렉터리가 파일입니다.

또는

네트워크 이름을 알 수 없습니다.

호출자에게 필요한 권한이 없는 경우

2.1보다 오래된 .NET Framework 및 .NET Core 버전: path 길이가 0인 문자열이거나, 공백만 포함하거나, 하나 이상의 잘못된 문자를 포함합니다. 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인 경우 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");
Directory::CreateDirectory("Public\\Html");
Directory::CreateDirectory("\\Users\\User1\\Public\\Html");
Directory::CreateDirectory("c:\\Users\\User1\\Public\\Html");

설명

에 지정된 path 모든 디렉터리(이미 존재하거나 의 path 일부가 유효하지 않은 경우)가 만들어집니다. 디렉터리가 이미 있는 경우 이 메서드는 새 디렉터리를 만들지 않지만 기존 디렉터리에 대한 개체를 DirectoryInfo 반환합니다.

매개 변수는 path 파일 경로가 아닌 디렉터리 경로를 지정합니다.

후행 공백은 디렉터리를 만들기 전에 매개 변수의 path 끝에서 제거됩니다.

쓰기 권한이 있는 공유의 원격 컴퓨터에서 디렉터리를 만들 수 있습니다. UNC 경로가 지원됩니다. 예를 들어 Visual Basic \\\\2009\\Archives\\December 및 C#에서 에 다음을 path\\2009\Archives\December 지정할 수 있습니다.

콜론 문자(:)만 있는 디렉터리를 만드는 것은 지원되지 않으며 이 throw됩니다 NotSupportedException .

Unix 시스템에서 슬래시(/)를 경로 구분 기호로 사용합니다.

추가 정보

적용 대상

CreateDirectory(String, UnixFileMode)

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 는 길이가 0인 문자열이거나 하나 이상의 잘못된 문자를 포함합니다. 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에 의해 지정된 디렉터리가 파일입니다.

또는

네트워크 이름을 알 수 없습니다.

호출자에게 필요한 권한이 없는 경우

2.1보다 오래된 .NET Framework 및 .NET Core 버전: path 길이가 0인 문자열이거나, 공백만 포함하거나, 하나 이상의 잘못된 문자를 포함합니다. 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 경로가 지원됩니다. 예를 들어 Visual Basic \\\\2009\\Archives\\December 및 C#에서 에 다음을 path\\2009\Archives\December 지정할 수 있습니다.

콜론 문자(:)만 사용하여 디렉터리를 만드는 것은 지원되지 않으며 이 NotSupportedException throw됩니다.

적용 대상