如何使用 C++ 删除文件夹?
如果不存在跨平台方法,那么如何为最流行的操作系统(Windows、Linux、Mac、iOS、Android)做到这一点? POSIX 解决方案适用于所有这些吗?
使用 C++17,您可以使用std::filesystem http://en.cppreference.com/w/cpp/filesystem,在 C++14 中std::experimental::filesystem http://en.cppreference.com/w/cpp/experimental/fs已经可用。两者都允许使用filesystem::remove() http://en.cppreference.com/w/cpp/filesystem/remove.
C++17:
#include <filesystem>
std::filesystem::remove("myEmptyDirectoryOrFile"); // Deletes empty directories or single files.
std::filesystem::remove_all("myDirectory"); // Deletes one or more files recursively.
C++14:
#include <experimental/filesystem>
std::experimental::filesystem::remove("myDirectory");
注1:
这些函数抛出文件系统错误 http://en.cppreference.com/w/cpp/filesystem/remove如果出现错误。如果您想避免捕获异常,请使用重载变体std::error_code http://en.cppreference.com/w/cpp/error/error_code作为第二个参数。例如。
std::error_code errorCode;
if (!std::filesystem::remove("myEmptyDirectoryOrFile", errorCode)) {
std::cout << errorCode.message() << std::endl;
}
笔记2:
转换为std::filesystem::path http://en.cppreference.com/w/cpp/filesystem/path不同的编码是隐式发生的,因此您可以将字符串传递给filesystem::remove() http://en.cppreference.com/w/cpp/filesystem/remove.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)