Ce face std::filesystem::create_directory
create_directory(p) creează directorul p și returnează true. Dacă directorul există deja, returnează false fără eroare. Dacă directorul părinte nu există, aruncă std::filesystem::filesystem_error.
create_directories(p) creează tot lanțul de directoare (ca mkdir -p): pentru a/b/c creează a, apoi a/b, apoi a/b/c, după nevoie.
Parametri
| Parametru | Descriere |
|---|---|
p |
Calea directorului de creat. |
Ce returnează
true dacă a fost creat ceva nou, false dacă exista deja.
Exemple
Exemplul 1: create_directory și create_directories
#include <filesystem>
#include <print>
int main() {
namespace fs = std::filesystem;
std::println("prima dată: {}", fs::create_directory("rapoarte"));
std::println("a doua oară: {}", fs::create_directory("rapoarte"));
std::println("lanț: {}", fs::create_directories("proiect/src/teste"));
std::println("există proiect/src/teste: {}", fs::exists("proiect/src/teste"));
fs::remove_all("rapoarte");
fs::remove_all("proiect");
}
Rezultat
prima dată: true
a doua oară: false
lanț: true
există proiect/src/teste: true
Exemplul 2: Părintele lipsește
create_directory nu creează părinții, așa că aruncă excepție. Mesajul vine din libc++.
#include <filesystem>
#include <print>
int main() {
namespace fs = std::filesystem;
try {
fs::create_directory("nu-exista/copil");
} catch (const fs::filesystem_error& e) {
std::println("Eroare: {}", e.what());
}
}
Rezultat
Eroare: filesystem error: in create_directory: No such file or directory ["nu-exista/copil"]
Greșeli frecvente
- Consideri
falsedrept eșec.falseînseamnă doar că directorul exista deja; erorile reale se semnalează prin excepție (sau prinstd::error_code).
Comenzi înrudite
std::filesystem::remove: Șterge un fișier sau un director gol; remove_all șterge un director cu tot conținutul lui.std::filesystem::exists: Verifică dacă un fișier sau director există pe disc.std::filesystem::path: Reprezintă calea unui fișier sau director și permite construirea și desfacerea ei pe componente.