std::experimental::filesystem::remove, std::experimental::filesystem::remove_all
From cppreference.com
< 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 がディレクトリである場合、その内容と、すべてのサブディレクトリの内容を再帰的に削除してから、POSIX の remove を繰り返し適用したかのように p 自体を削除します。シンボリックリンクはたどりません(シンボリックリンク自体が削除され、そのターゲットは削除されません)。
目次 |
[編集] Parameters
| p | - | 削除するパス |
| エラーコード | - | 例外を投げないオーバーロードでのエラー報告のための出力パラメータ |
[編集] Return value
1) ファイルが削除された場合は true、存在しなかった場合は false。 error_code& 引数を受け取るオーバーロードは、エラー時に false を返します。
2) 削除されたファイルおよびディレクトリの数(p が最初から存在しなかった場合はゼロになる可能性があります)を返します。 error_code& 引数を受け取るオーバーロードは、エラー時に static_cast<std::uintmax_t>(-1) に設定します。
[編集] Exceptions
error_code& パラメータを受け取らないオーバーロードは、基盤となる OS API エラーが発生した場合に、最初の引数として p、エラーコード引数として OS エラーコードを使用して構築された filesystem_error をスローします。メモリ割り当てに失敗した場合、 std::bad_alloc がスローされる可能性があります。 error_code& を受け取るオーバーロードは、OS API の呼び出しが失敗した場合にそれを OS API エラーコードに設定し、エラーが発生しない場合は ec.clear() を実行します。このオーバーロードはnoexcept 指定:
noexcept
[編集] Notes
POSIX システムでは、この関数は通常、必要に応じて `unlink` および `rmdir` を呼び出します。Windows では `RemoveDirectoryW` および `DeleteFileW` を呼び出します。
[編集] Example
このコードを実行
#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
[編集] See also
| ファイルを削除する (関数) |