std::filesystem:: remove, std::filesystem:: remove_all
|
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) |
|
std::
uintmax_t
remove_all
(
const
std::
filesystem
::
path
&
p
)
;
|
(3) | (seit C++17) |
|
std::
uintmax_t
remove_all
(
const
std::
filesystem
::
path
&
p,
std::
error_code
&
ec
)
;
|
(4) | (seit C++17) |
remove
gelöscht. Symbolischen Links wird nicht gefolgt (der symbolische Link wird entfernt, nicht sein Ziel).
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
error_code&
Argument gibt
false
bei Fehlern zurück.
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.
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) |