Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | experimental‎ | fs
 
 
 
 
Definiert im Header <experimental/filesystem>
bool remove( const path& p );
bool remove( const path& p, error_code& ec );
(1) (Dateisystem-TS)
std::uintmax_t remove_all( const path& p );
std::uintmax_t remove_all( const path& p, error_code& ec );
(2) (Dateisystem-TS)
1) Die Datei oder das leere Verzeichnis, das durch den Pfad p identifiziert wird, wird gelöscht, als ob durch das POSIX remove. Symlinks werden nicht verfolgt (Symlink wird entfernt, nicht sein Ziel).
2) Löscht den Inhalt von p (falls es sich um ein Verzeichnis handelt) und den Inhalt aller seiner Unterverzeichnisse rekursiv, dann löscht p selbst, als ob durch wiederholtes Anwenden des POSIX remove. Symlinks werden nicht verfolgt (Symlink wird entfernt, nicht sein Ziel).

Inhalt

[edit] Parameter

p - zu löschender Pfad
ec - Ausgabeparameter für die Fehlerberichterstattung in der nicht auslösenden Überladung

[edit] Rückgabewert

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

[edit] Ausnahmen

Die Überladung, die keinen error_code& Parameter annimmt, löst filesystem_error bei zugrunde liegenden OS-API-Fehlern aus, konstruiert mit p als erstes Argument und dem OS-Fehlercode als Fehlercode-Argument. std::bad_alloc kann ausgelöst werden, wenn die Speicherzuweisung fehlschlägt. Die Überladung, die ein error_code& Argument annimmt, setzt dieses auf den OS-API-Fehlercode, wenn ein OS-API-Aufruf fehlschlägt, und führt ec.clear() aus, wenn keine Fehler auftreten. Diese Überladung hat
noexcept-Spezifikation:  
noexcept
  

[edit] Hinweise

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

[edit] Beispiel

#include <cstdint>
#include <experimental/filesystem>
#include <iostream>
namespace fs = std::experimental::filesystem;
 
int main()
{
    fs::path dir = fs::temp_directory_path();
    fs::create_directories(dir / "abcdef/example");
    std::uintmax_t n = fs::remove_all(dir / "abcdef");
    std::cout << "Deleted " << n << " files or directories\n";
}

Mögliche Ausgabe

Deleted 2 files or directories

[edit] Siehe auch

löscht eine Datei
(function) [bearbeiten]