Namespaces
Variants

std::experimental::filesystem:: exists

From cppreference.net
Défini dans l'en-tête <experimental/filesystem>
bool exists ( file_status s )
(1) (filesystem TS)
bool exists ( const path & p ) ;
bool exists ( const path & p, error_code & ec )
(2) (filesystem TS)

Vérifie si le statut de fichier ou le chemin donné correspond à un fichier ou répertoire existant.

1) Équivalent à status_known ( s ) && s. type ( ) ! = file_type :: not_found .
2) Équivalent à exists ( status ( p ) ) ou exists ( status ( p, ec ) ) (les liens symboliques sont suivis). La surcharge non-lancante retourne false si une erreur survient.

Table des matières

Paramètres

s - statut du fichier à vérifier
p - chemin à examiner
ec - paramètre de sortie pour le rapport d'erreur dans la surcharge non-lancée

Valeur de retour

true si le chemin ou l'état de fichier donné correspond à un fichier ou répertoire existant, false dans le cas contraire.

Exceptions

1)
noexcept spécification :
noexcept
2) La surcharge qui ne prend pas de paramètre error_code & lance une exception filesystem_error en cas d'erreur de l'API système sous-jacente, construite avec p comme premier argument et le code d'erreur du système comme argument de code d'erreur. std:: bad_alloc peut être levée si l'allocation de mémoire échoue. La surcharge prenant un paramètre error_code & le définit sur le code d'erreur de l'API système si un appel d'API système échoue, et exécute ec. clear ( ) si aucune erreur ne survient. Cette surcharge possède la spécification
noexcept :
noexcept

Notes

Les informations fournies par cette fonction sont généralement également disponibles comme sous-produit de l'itération de répertoire. Pendant l'itération de répertoire, appeler exists(*iterator) est moins efficace que exists(iterator->status()) .

Exemple

#include <cstdint>
#include <experimental/filesystem>
#include <fstream>
#include <iostream>
namespace fs = std::experimental::filesystem;
void demo_exists(const fs::path& p, fs::file_status s = fs::file_status{})
{
    std::cout << p;
    if (fs::status_known(s) ? fs::exists(s) : fs::exists(p))
        std::cout << " exists\n";
    else
        std::cout << " does not exist\n";
}
int main()
{
    fs::create_directory("sandbox");
    std::ofstream("sandbox/file"); // create regular file
    fs::create_symlink("non-existing", "sandbox/symlink");
    demo_exists("sandbox");
    for (auto it = fs::directory_iterator("sandbox"); it != fs::directory_iterator(); ++it)
        demo_exists(*it, it->status()); // use cached status from directory entry
    fs::remove_all("sandbox");
}

Sortie :

"sandbox" exists
"sandbox/file" exists
"sandbox/symlink" does not exist

Voir aussi

détermine les attributs du fichier
détermine les attributs du fichier en vérifiant la cible du lien symbolique
(fonction)
représente le type de fichier et les permissions
(classe)
statut mis en cache du fichier désigné par cette entrée de répertoire
symlink_status mis en cache du fichier désigné par cette entrée de répertoire
(fonction membre publique de std::experimental::filesystem::directory_entry )