Ce face std::filesystem::remove
remove(p) șterge fișierul sau directorul gol p și returnează true. Dacă nu există nimic la acea cale, returnează false. Pe un director care nu este gol aruncă filesystem_error.
remove_all(p) șterge recursiv tot ce se află sub p și returnează numărul de elemente șterse. Ștergerea este definitivă (nu trece prin coșul de gunoi), așa că verifică bine calea.
Parametri
| Parametru | Descriere |
|---|---|
p |
Calea de șters. |
Ce returnează
remove: bool. remove_all: numărul de fișiere și directoare șterse.
Exemple
Exemplul 1: Ștergerea unui fișier
#include <filesystem>
#include <fstream>
#include <print>
int main() {
namespace fs = std::filesystem;
std::ofstream("temporar.txt") << "date";
std::println("șters: {}", fs::remove("temporar.txt"));
std::println("șters din nou: {}", fs::remove("temporar.txt"));
}
Rezultat
șters: true
șters din nou: false
Exemplul 2: remove_all pe un director cu conținut
#include <filesystem>
#include <fstream>
#include <print>
int main() {
namespace fs = std::filesystem;
fs::create_directories("cache/imagini");
std::ofstream("cache/a.tmp") << "1";
std::ofstream("cache/imagini/b.tmp") << "2";
try {
fs::remove("cache"); // nu este gol
} catch (const fs::filesystem_error&) {
std::println("remove nu poate șterge un director cu conținut");
}
std::println("elemente șterse: {}", fs::remove_all("cache"));
std::println("cache există: {}", fs::exists("cache"));
}
Rezultat
remove nu poate șterge un director cu conținut
elemente șterse: 4
cache există: false
Greșeli frecvente
- Apelezi
remove_allcu o cale construită din date neverificate (de exemplu un șir gol sau"/"). Poți șterge mult mai mult decât voiai; verifică întotdeauna calea înainte.
Comenzi înrudite
std::filesystem::create_directory: Creează un director; create_directories creează și toate directoarele părinte care lipsesc.std::filesystem::exists: Verifică dacă un fișier sau director există pe disc.std::filesystem::rename: Redenumește sau mută un fișier sau un director.