【发布时间】:2017-04-29 17:21:15
【问题描述】:
我想在 C++17 中删除带有子文件夹和文件的文件夹。我正在使用experimental/filesystem
namespace filesys = std::experimental::filesystem;
...
uintmax_t n = filesys::remove_all("tmp");
cout << "Deleted " << n << " files or directories\n";
但是当我运行这段代码时,程序抛出异常
在抛出 'std::experimental::filesystem::v1::__cxx11::filesystem_error' 的实例后调用终止
what(): filesystem error: cannot remove all: Directory not empty [tmp]
中止
使用编译器 g++ 5.4.0
文档说:
递归删除 p 的内容(如果它是一个目录)及其所有子目录的内容,然后删除 p 本身,就像通过重复应用 POSIX 删除一样。不遵循符号链接(删除符号链接,而不是其目标)
我的代码有问题吗?
【问题讨论】:
-
tmp 在哪里?你在哪里运行可执行文件?否则需要指定完整路径
-
experimental不是来自 C++ 标准,而是来自一些单独的技术规范。在 C++17 中,您只需使用std::filesystem::remove_all。 -
deW1: tmp 与程序在同一个文件夹中...我用 tmp 文件创建了文件夹,然后我想要清理
-
让我猜猜:windows操作系统?
-
只有当我尝试删除带有子文件夹的文件夹时才会出现问题。有文件的文件夹没问题
标签: c++