std::experimental::filesystem:: remove, std::experimental::filesystem:: remove_all
From cppreference.net
<
cpp
|
experimental
|
fs
|
Определено в заголовочном файле
<experimental/filesystem>
|
||
|
bool
remove
(
const
path
&
p
)
;
bool remove ( const path & p, error_code & ec ) ; |
(1) | (filesystem TS) |
|
std::
uintmax_t
remove_all
(
const
path
&
p
)
;
std:: uintmax_t remove_all ( const path & p, error_code & ec ) ; |
(2) | (filesystem TS) |
1)
Файл или пустой каталог, определяемый путем
p
, удаляется как с помощью POSIX
remove
. Символические ссылки не отслеживаются (удаляется сама символическая ссылка, а не её цель).
2)
Удаляет содержимое
p
(если это директория) и содержимое всех её поддиректорий рекурсивно, затем удаляет сам
p
как если бы многократно применялся POSIX
remove
. Символические ссылки не отслеживаются (удаляется сама символьная ссылка, а не её цель).
Содержание |
Параметры
| p | - | путь для удаления |
| ec | - | выходной параметр для сообщения об ошибках в непорождающей перегрузке |
Возвращаемое значение
1)
true
если файл был удален,
false
если файл не существовал. Перегруженная версия с аргументом
error_code
&
возвращает
false
при ошибках.
2)
Возвращает количество файлов и каталогов, которые были удалены (может быть равно нулю, если
p
изначально не существовал). Перегруженная версия, принимающая аргумент
error_code
&
возвращает
static_cast
<
std::
uintmax_t
>
(
-
1
)
при ошибке.
Исключения
The overload that does not take an error_code & parameter throws filesystem_error on underlying OS API errors, constructed with p as the first argument and the OS error code as the error code argument. std:: bad_alloc may be thrown if memory allocation fails. The overload taking an error_code & parameter sets it to the OS API error code if an OS API call fails, and executes ec. clear ( ) if no errors occur. This overload has
noexcept
спецификация:
noexcept
Примечания
В системах POSIX эта функция обычно вызывает
unlink
и
rmdir
по мере необходимости, в Windows
RemoveDirectoryW
и
DeleteFileW
.
Пример
Запустить этот код
#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"; }
Возможный вывод:
Deleted 2 files or directories
Смотрите также
|
удаляет файл
(функция) |