Namespaces
Variants

std::filesystem:: is_empty

From cppreference.net
Definiert im Header <filesystem>
bool is_empty ( const std:: filesystem :: path & p ) ;
(1) (seit C++17)
bool is_empty ( const std:: filesystem :: path & p, std:: error_code & ec ) ;
(2) (seit C++17)

Prüft, ob der angegebene Pfad auf eine leere Datei oder ein leeres Verzeichnis verweist.

Inhaltsverzeichnis

Parameter

p - zu untersuchender Pfad
ec - Fehlercode, der im Fehlerfall modifiziert wird

Rückgabewert

true wenn der durch p angegebene Pfad auf eine leere Datei oder ein leeres Verzeichnis verweist, false andernfalls. Die nicht-werfende Überladung gibt false zurück, wenn ein Fehler auftritt.

Exceptions

Jede Überladung, die nicht als noexcept gekennzeichnet ist, kann std::bad_alloc werfen, wenn die Speicherallokation fehlschlägt.

1) Wirft std::filesystem::filesystem_error bei zugrundeliegenden OS-API-Fehlern, konstruiert mit p als erstem Pfadargument und dem OS-Fehlercode als Fehlercodeargument.
2) Setzt einen std:: error_code & -Parameter auf den OS-API-Fehlercode, falls ein OS-API-Aufruf fehlschlägt, und führt ec. clear ( ) aus, falls keine Fehler auftreten.

Beispiel

#include <cstdio>
#include <filesystem>
#include <fstream>
#include <iostream>
int main()
{
    namespace fs = std::filesystem;
    const fs::path tmp_dir{fs::temp_directory_path()};
    std::cout << std::boolalpha
              << "Temp dir: " << tmp_dir << '\n'
              << "is_empty(): " << fs::is_empty(tmp_dir) << '\n';
    const fs::path tmp_name{tmp_dir / std::tmpnam(nullptr)};
    std::cout << "Temp file: " << tmp_name << '\n';
    std::ofstream file{tmp_name.string()};
    std::cout << "is_empty(): " << fs::is_empty(tmp_name) << '\n';
    file << "cppreference.net";
    file.flush();
    std::cout << "is_empty(): " << fs::is_empty(tmp_name) << '\n'
              << "file_size(): " << fs::file_size(tmp_name) << '\n';
    file.close();
    fs::remove(tmp_name);
}

Mögliche Ausgabe:

Temp dir: "/tmp"
is_empty(): false
Temp file: "/tmp/fileCqd9DM"
is_empty(): true
is_empty(): false
file_size(): 16

Fehlerberichte

Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.

DR Angewendet auf Verhalten wie veröffentlicht Korrigiertes Verhalten
LWG 3013 C++17 error_code Überladung als noexcept markiert, kann aber Speicher allozieren noexcept entfernt

Siehe auch

(C++17) (C++17)
bestimmt Dateiattribute
bestimmt Dateiattribute, überprüft das Symlink-Ziel
(Funktion)
(C++17)
prüft, ob der Pfad auf ein existierendes Dateisystemobjekt verweist
(Funktion)