std::filesystem:: remove, std::filesystem:: remove_all
|
Defined in header
<filesystem>
|
||
|
bool
remove
(
const
std::
filesystem
::
path
&
p
)
;
|
(1) | (since C++17) |
|
bool
remove
(
const
std::
filesystem
::
path
&
p,
std::
error_code
&
ec
)
noexcept
;
|
(2) | (since C++17) |
|
std::
uintmax_t
remove_all
(
const
std::
filesystem
::
path
&
p
)
;
|
(3) | (since C++17) |
|
std::
uintmax_t
remove_all
(
const
std::
filesystem
::
path
&
p,
std::
error_code
&
ec
)
;
|
(4) | (since C++17) |
remove
. Symlinks are not followed (symlink is removed, not its target).
remove
. Symlinks are not followed (symlink is removed, not its target).
Contents |
Parameters
| p | - | path to delete |
| ec | - | out-parameter for error reporting in the non-throwing overload. |
Return value
error_code&
argument returns
false
on errors.
error_code&
argument returns
static_cast
<
std::
uintmax_t
>
(
-
1
)
on error.
Exceptions
Any overload not marked
noexcept
may throw
std::bad_alloc
if memory allocation fails.
Notes
On POSIX systems, this function typically calls
unlink
and
rmdir
as needed, on Windows
DeleteFileW
and
RemoveDirectoryW
.
If p did not exist, this function returns false and does not report an error.
Example
#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; // creates file containing O_O std::cout << "remove(): " << fs::remove(tmp / O_O) << '\n'; // success std::cout << "remove(): " << fs::remove(tmp / O_O) << '\n'; // fail 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"; }
Possible output:
remove(): true remove(): false remove_all(): 2 files or directories
Defect reports
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 3014 | C++17 |
error_code
overload of
remove_all
marked noexcept but can allocate memory
|
noexcept removed |
See also
|
erases a file
(function) |