rust - 如何删除我在 Rust 中无权访问的目录?
问题描述
如何在 Rust 中递归删除目录,同时删除具有 Unix 权限的空目录000
?这些权限被解读为“任何用户都不允许读取、写入或执行”。
我以前创建的目录是这样的:
mkdir -p dir/trap
chmod 000 dir/trap
我试过这个方法:
std::fs::remove_dir_all("dir").unwrap();
但是,它因“权限被拒绝”而失败。是否还有其他解决方案仍然可以删除此类目录,例如rm -rf
?
解决方案
问题是remove_dir_all()
首先遍历目录的内容以删除可能存在的任何文件或子目录。而且您没有读取目录的权限,因此出现错误。
您可以改为调用:
std::fs::remove_dir("dir").unwrap();
它不会尝试遍历目录,而是假定它已经为空,如果不是则失败。
如果你想删除一个非空的、模式化的000
目录,你必须首先将权限改回一个合理的值,然后你才能remove_dir_all()
安全地调用。
推荐阅读
- mysql - 你如何将字符串(json或类似的)读入mysql或oracle sql的数据表中?
- android - 在 Visual Studio Code 中找不到参数的方法 flutter()
- node.js - CORS 的请求块
- c# - 如何在asp.net代码中正确组合html?
- python - 排列 Leetcode
- java - 如何正确启动Tomcat服务?
- arrays - 如何使用基于文本的坐标创建多个多边形?
- gradle - Kotlin 的增量编译是如何工作的?
- typescript - Typescript Proxy从get返回不同于set所需的类型?
- qt - 成员访问不完整类型“QScrollBar”