C++로 디렉터리 만들기
-
std::filesystem::create_directory
함수를 사용하여 C++에서 디렉토리 생성 -
std::filesystem::create_directories
함수를 사용하여 C++에서 디렉토리 생성
이 기사에서는 C++에서 디렉토리를 만드는 방법에 대한 몇 가지 방법을 설명합니다.
std::filesystem::create_directory
함수를 사용하여 C++에서 디렉토리 생성
C++ 17 버전부터 표준 라이브러리는 원래 Boost 라이브러리의 일부로 구현 된 파일 시스템 조작 인터페이스를 제공합니다. 모든 파일 시스템 기능은std::filesystem
네임 스페이스 아래에 제공되며, 다음 예제에서fs
로 별명을 지정합니다. create_directory
기능은 현재 작업 디렉토리에 새 디렉토리를 생성하는 데 사용됩니다. 이 함수는std::filesystem::path
유형의 필수 인수 하나를 취합니다.이 인수는 문자열 객체로도 전달 될 수 있으며 적절한 초기화가 자동으로 수행됩니다.
#include <filesystem>
#include <iostream>
using std::cout;
using std::endl;
using std::string;
using std::system;
namespace fs = std::filesystem;
int main() {
string directory_name("tmp_dir");
fs::create_directory(directory_name)
? cout << "created directory - " << directory_name << endl
: cout << "create_directory() failed" << endl;
return EXIT_SUCCESS;
}
성공적인 함수 호출은create_directory
의 반환 값으로 확인할 수 있으며true
로 평가되어야합니다. 생성 된 디렉토리는 동일한 디렉토리 경로를 사용하는std::filesystem::remove
호출로 제거 할 수 있습니다. create_directory
는 선택적으로 두 경로 인수를 사용할 수 있습니다. 두 번째는 기존 디렉토리 여야하며 새로 생성 된 디렉토리는 이전 디렉토리의 속성을 복사합니다.
#include <filesystem>
#include <iostream>
using std::cout;
using std::endl;
using std::string;
using std::system;
namespace fs = std::filesystem;
int main() {
string directory_name("tmp_dir");
fs::create_directory(directory_name)
? cout << "created directory - " << directory_name << endl
: cout << "create_directory() failed" << endl;
fs::remove(directory_name);
return EXIT_SUCCESS;
}
std::filesystem::create_directories
함수를 사용하여 C++에서 디렉토리 생성
또 다른 유용한 기능은std::filesystem::create_directories
로, 단일 경로 인수로 지정된 여러 중첩 디렉토리를 만들 수 있습니다. 다음 예제 코드에서는이 함수를 통해 4 단계 중첩 디렉터리를 만든 다음 첫 번째 디렉터리와 루트 디렉터리를 공유하는 다른 디렉터리를 만듭니다. 그러나 마지막 수준의 디렉토리 이름이 이미 존재하는 경우 함수는false
를 반환합니다.
#include <filesystem>
#include <iostream>
using std::cout;
using std::endl;
using std::string;
using std::system;
namespace fs = std::filesystem;
int main() {
string directory_tree = "x_tmp/level1/level2/level3";
string directory_tree2 = "x_tmp/level1-2/level2-1";
auto ret = fs::create_directories(directory_tree);
if (ret) {
cout << "created directory tree as follows: " << endl;
std::system("tree x_tmp");
} else {
cout << "create_directories() failed" << endl;
}
auto ret2 = fs::create_directories(directory_tree2);
if (ret2) {
cout << "created directory tree as follows: " << endl;
std::system("tree x_tmp");
} else {
cout << "create_directories() failed" << endl;
}
return EXIT_SUCCESS;
}
create_directory
와 유사하게이 함수는 성공적인 호출을 표시하는 부울 값도 리턴합니다. 제거가 필요한 경우std::filesystem::remove_all
함수를 루트 디렉토리 이름으로 호출 할 수 있으며 전체 트리를 삭제합니다.
#include <filesystem>
#include <iostream>
using std::cout;
using std::endl;
using std::string;
using std::system;
namespace fs = std::filesystem;
int main() {
string directory_tree = "x_tmp/level1/level2/level3";
string directory_tree2 = "x_tmp/level1-2/level2-1";
auto ret = fs::create_directories(directory_tree);
if (ret) {
cout << "created directory tree as follows: " << endl;
std::system("tree x_tmp");
} else {
cout << "create_directories() failed" << endl;
}
auto ret2 = fs::create_directories(directory_tree2);
if (ret2) {
cout << "created directory tree as follows: " << endl;
std::system("tree x_tmp");
} else {
cout << "create_directories() failed" << endl;
}
fs::remove_all(directory_tree.substr(0, directory_tree.find('/')));
return EXIT_SUCCESS;
}
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook