Ce face std::filesystem::exists
std::filesystem::exists(p) returnează true dacă la calea p există ceva (fișier, director, legătură validă). Pentru a ști ce anume este, folosește is_regular_file(p) și is_directory(p).
Varianta cu std::error_code nu aruncă excepții dacă verificarea însăși eșuează (de exemplu, lipsesc permisiunile).
Parametri
| Parametru | Descriere |
|---|---|
p |
Calea verificată. |
ec |
Opțional: primește eroarea în loc să se arunce o excepție. |
Ce returnează
true dacă există, altfel false.
Exemple
Exemplul 1: Fișier, director sau nimic
#include <filesystem>
#include <fstream>
#include <print>
int main() {
namespace fs = std::filesystem;
std::ofstream("note.txt") << "10 9 8\n";
fs::create_directory("arhiva");
for (const char* nume : {"note.txt", "arhiva", "lipsa.txt"}) {
fs::path p = nume;
std::println("{:10} există: {:5} fișier: {:5} director: {}",
nume, fs::exists(p), fs::is_regular_file(p), fs::is_directory(p));
}
fs::remove("note.txt");
fs::remove("arhiva");
}
Rezultat
note.txt există: true fișier: true director: false
arhiva există: true fișier: false director: true
lipsa.txt există: false fișier: false director: false
Exemplul 2: Creează fișierul doar dacă nu există
#include <filesystem>
#include <fstream>
#include <print>
int main() {
namespace fs = std::filesystem;
const fs::path config = "config.ini";
for (int i = 0; i < 2; ++i) {
if (!fs::exists(config)) {
std::ofstream(config) << "limba=ro\n";
std::println("Am creat {}", config.string());
} else {
std::println("{} există deja", config.string());
}
}
fs::remove(config);
}
Rezultat
Am creat config.ini
config.ini există deja
Greșeli frecvente
- Verifici cu
existsși abia apoi deschizi fișierul, crezând că astfel ești protejat. Între cele două momente fișierul poate fi șters de alt program; verifică oricum rezultatul deschiderii.
Comenzi înrudite
std::filesystem::path: Reprezintă calea unui fișier sau director și permite construirea și desfacerea ei pe componente.std::filesystem::file_size: Returnează dimensiunea unui fișier, în octeți.std::filesystem::create_directory: Creează un director; create_directories creează și toate directoarele părinte care lipsesc.std::ifstream::open: Deschide, verifică și închide fișierul unui flux: open, is_open, close.