Namespaces
Variants

std::experimental::filesystem:: create_directory, std::experimental::filesystem:: create_directories

From cppreference.net
헤더 파일에 정의됨 <experimental/filesystem>
bool create_directory ( const path & p ) ;
bool create_directory ( const path & p, error_code & ec ) ;
(1) (filesystem TS)
bool create_directory ( const path & p, const path & existing_p ) ;
bool create_directory ( const path & p, const path & existing_p, error_code & ec ) ;
(2) (filesystem TS)
bool create_directories ( const path & p ) ;
bool create_directories ( const path & p, error_code & ec ) ;
(3) (filesystem TS)
1) POSIX mkdir() 함수처럼 두 번째 인자로 static_cast < int > ( fs :: perms :: all ) 를 사용하여 디렉토리 p 를 생성합니다(상위 디렉토리가 이미 존재해야 함). p 가 이미 존재하고 디렉토리인 경우, 함수는 아무 작업도 수행하지 않습니다(이 조건은 오류로 처리되지 않음).
2) (1) 과 동일하지만, 새 디렉터리의 속성은 existing_p (반드시 존재하는 디렉터리여야 함)에서 복사됩니다. 어떤 속성이 복사되는지는 운영체제에 따라 다릅니다: POSIX 시스템에서는 다음과 같은 방식으로 속성이 복사됩니다.
stat(existing_p.c_str(), &attributes_stat)
mkdir(p.c_str(), attributes_stat.st_mode)
Windows OS에서는 다음과 같은 방식으로 속성이 복사됩니다.
CreateDirectoryExW(existing_p.c_str(), p.c_str(), 0)
3) 이미 존재하지 않는 p 의 모든 요소에 대해 (1) 을 실행합니다.

비예외(non-throwing) 오버로드는 false 를 반환합니다.

목차

매개변수

p - 생성할 새 디렉터리의 경로
existing_p - 속성을 복사할 디렉터리의 경로
ec - 비예외 발생 오버로드에서 오류 보고를 위한 출력 매개변수

반환값

1,2) true 디렉토리 생성이 성공한 경우, false 그렇지 않은 경우.

예외

1,3) error_code & 매개변수를 취하지 않는 오버로드는 기본 OS API 오류 시 filesystem_error 를 발생시키며, 첫 번째 인수로 p 를, 오류 코드 인수로 OS 오류 코드를 사용하여 구성됩니다. std:: bad_alloc 는 메모리 할당이 실패할 경우 발생할 수 있습니다. error_code & 매개변수를 취하는 오버로드는 OS API 호출이 실패할 경우 이를 OS API 오류 코드로 설정하고, 오류가 발생하지 않으면 ec. clear ( ) 를 실행합니다. 이 오버로드는 다음
noexcept 명세를 가집니다:
noexcept
2) error_code & 매개변수를 받지 않는 오버로드는 기본 OS API 오류 시 filesystem_error 를 발생시키며, 첫 번째 인수로 p 를, 두 번째 인수로 existing_p 를, 오류 코드 인수로 OS 오류 코드를 사용하여 구성됩니다. std:: bad_alloc 는 메모리 할당이 실패할 경우 발생할 수 있습니다. error_code & 매개변수를 받는 오버로드는 OS API 호출이 실패할 경우 이를 OS API 오류 코드로 설정하고, 오류가 발생하지 않으면 ec. clear ( ) 를 실행합니다. 이 오버로드는
noexcept 사양을 가집니다:
noexcept

참고 사항

속성 보존 오버로드 (2) 는 디렉토리를 재귀적으로 복사할 때 copy() 에 의해 암시적으로 호출됩니다. boost.filesystem에서 이에 상응하는 함수는 copy_directory 입니다(인자 순서가 반대).

예제

#include <cstdlib>
#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
int main()
{
    fs::create_directories("sandbox/1/2/a");
    fs::create_directory("sandbox/1/2/b");
    fs::permissions("sandbox/1/2/b", fs::perms::remove_perms | fs::perms::others_all);
    fs::create_directory("sandbox/1/2/c", "sandbox/1/2/b");
    std::system("ls -l sandbox/1/2");
    fs::remove_all("sandbox");
}

가능한 출력:

drwxr-xr-x 2 user group 4096 Apr 15 09:33 a
drwxr-x--- 2 user group 4096 Apr 15 09:33 b
drwxr-x--- 2 user group 4096 Apr 15 09:33 c

참고 항목

심볼릭 링크 생성
(함수)
파일 또는 디렉토리 복사
(함수)
파일 시스템 권한 식별
(열거형)