std::filesystem::create_directory în C++

Creează un director; create_directories creează și toate directoarele părinte care lipsesc.

Sintaxă
bool create_directory(const std::filesystem::path& p);
bool create_directories(const std::filesystem::path& p);

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 false drept eșec. false înseamnă doar că directorul exista deja; erorile reale se semnalează prin excepție (sau prin std::error_code).

Comenzi înrudite