Namespaces
Variants

std::filesystem:: remove, std::filesystem:: remove_all

From cppreference.net
Definiert in Header <filesystem>
bool remove ( const std:: filesystem :: path & p ) ;
(1) (seit C++17)
bool remove ( const std:: filesystem :: path & p, std:: error_code & ec ) noexcept ;
(2) (seit C++17)
(3) (seit C++17)
(4) (seit C++17)
1,2) Die Datei oder das leere Verzeichnis, das durch den Pfad p identifiziert wird, wird wie durch die POSIX-Funktion remove gelöscht. Symbolischen Links wird nicht gefolgt (der symbolische Link wird entfernt, nicht sein Ziel).
3,4) Löscht den Inhalt von p (falls es ein Verzeichnis ist) und den Inhalt aller seiner Unterverzeichnisse rekursiv, dann löscht p selbst, als ob durch wiederholte Anwendung des POSIX remove . Symbolischen Links wird nicht gefolgt (Symlink wird entfernt, nicht sein Ziel).

Inhaltsverzeichnis

Parameter

p - zu löschender Pfad
ec - Out-Parameter für Fehlerberichterstattung in der nicht-werfenden Überladung.

Rückgabewert

1,2) true wenn die Datei gelöscht wurde, false wenn sie nicht existierte. Die Überladung mit dem error_code& Argument gibt false bei Fehlern zurück.
3,4) Gibt die Anzahl der gelöschten Dateien und Verzeichnisse zurück (was null sein kann, falls p ursprünglich nicht existierte). Die Überladung mit dem error_code& Argument gibt bei einem Fehler static_cast < std:: uintmax_t > ( - 1 ) zurück.

Ausnahmen

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

1,3) Wirft std::filesystem::filesystem_error bei zugrundeliegenden OS-API-Fehlern, konstruiert mit p als erstem Pfadargument und dem OS-Fehlercode als Fehlercodeargument.
2,4) 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.

Hinweise

Auf POSIX-Systemen ruft diese Funktion typischerweise unlink und rmdir nach Bedarf auf, unter Windows DeleteFileW und RemoveDirectoryW .

Wenn p nicht existiert, gibt diese Funktion false zurück und meldet keinen Fehler.

Beispiel

#include <cstdint>
#include <filesystem>
#include <fstream>
#include <iostream>
int main()
{
    namespace fs = std::filesystem;
    std::cout << std::boolalpha;
    fs::path tmp{std::filesystem::temp_directory_path()};
    const auto O_O{"O_O"};
    std::ofstream{tmp / O_O} << O_O; // erstellt Datei mit Inhalt O_O
    std::cout << "remove(): " << fs::remove(tmp / O_O) << '\n'; // erfolgreich
    std::cout << "remove(): " << fs::remove(tmp / O_O) << '\n'; // fehlgeschlagen
    std::filesystem::create_directories(tmp / "abcdef/example");
    const std::uintmax_t n{fs::remove_all(tmp / "abcdef")};
    std::cout << "remove_all(): " << n << " files or directories\n";
}

Mögliche Ausgabe:

remove(): true
remove(): false
remove_all(): 2 files or directories

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 3014 C++17 error_code Überladung von remove_all als noexcept markiert, kann aber Speicher allozieren noexcept entfernt

Siehe auch

löscht eine Datei
(Funktion)