删除文件夹和所有文件/子目录
如何在 C++ 中删除文件夹及其所有文件/子目录(递归删除)?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
如何在 C++ 中删除文件夹及其所有文件/子目录(递归删除)?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(5)
说真的:
也许更多的是你正在寻找的东西,但特定于unix:
Seriously:
Perhaps more what you're looking for, but unix specific:
您可以使用 boost::remove_all rel="noreferrer">Boost.Filesystem。
You can use
boost::remove_all
from Boost.Filesystem.您可以使用
ftw()
、nftw()
、readdir()
、readdir_r()
来遍历目录并递归删除文件。但由于
ftw()
、nftw()
、readdir()
都不是线程安全的,所以我推荐readdir_r()
相反,如果您的程序在多线程环境中运行。You can use
ftw()
,nftw()
,readdir()
,readdir_r()
to traverse a directory and delete files recursively.But since neither
ftw()
,nftw()
,readdir()
is thread-safe, I'll recommendreaddir_r()
instead if your program runs in a multi-threaded environment.从 C++17 开始,首选答案是使用
递归删除文件夹的内容,然后最终删除文件夹,根据 这个。
Since C++17 the prefered answer to this would be to use
which deletes the content of the folder recursively and then finally deletes the folder, according to this.
标准 C++ 没有提供执行此操作的方法 - 您必须使用操作系统特定的代码或跨平台库(例如 Boost)。
Standard C++ provides no means of doing this - you will have to use operating system specific code or a cross-platform library such as Boost.