php - 如何使用取消链接删除 .DS_Store
问题描述
我创建了一个简单的函数来删除文件夹内的所有文件和文件夹本身。
function fn_delete_dir($dir)
{
if (is_dir($dir)) {
$dir = rtrim($dir, '/') . '/'; // add slash to end of string
$files = glob($dir . '*', GLOB_MARK);
foreach ($files as $vfile) {
if (is_dir($vfile)) {
fn_delete_dir($vfile);
} else {
unlink($vfile);
}
}
rmdir($dir);
return 1;
}
}
$dir = $_SERVER['DOCUMENT_ROOT'] . '/page/videography/images/videos/thumbs';
if (fn_delete_dir($dir)) {
echo 'all files deleted';
} else {
echo 'deletion failed';
}
这用于在我的 Windows 机器上工作。由于我切换到 Mac,此功能因 msg 而失败
Warning: rmdir(/Users/xxx/Sites/page/videography/images/videos/thumbs/): Directory not empty in /Users/xxx/Sites/[age/testing.php on line 18
我做了一个scandir只是为了检查是否有隐藏文件,我得到了以下
Array
(
[0] => .
[1] => ..
[2] => .DS_Store
[3] => thumbs
)
我猜问题是.DS_Store
和/或thumbs
那么,问题是如何删除这些隐藏文件?
解决方案
感谢@axiac,我能够使用 opendir() / readdir() / closedir() 重新创建函数
此功能能够删除文件,如thumbs
.DS_Store
...
function fn_delete_dir($dir)
{
if (is_dir($dir)) {
$dir = rtrim($dir, '/') . '/'; // add slash to end of string
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if ($file != "." && $file != "..") {
if (is_dir($dir . $file)) {
fn_delete_dir($dir . $file);
} else {
unlink($dir . $file);
}
}
}
closedir($dh);
rmdir($dir . $file);
return 1;
}
}
}
推荐阅读
- python - 如何将 python 日期时间日期与 Mysql 列日期进行比较?
- python-3.x - aiogram python中的异步。从异步函数中拉出
- java - 为什么在springboot中使用PostConstruct方法不能保持bean init顺序?
- angular - 如何使用 jspdf 和 html2canvas 打印全屏
- mysql - SQL - 一列的 PIVOT 并添加新列
- api - Microsoft Graph API 返回 ErrorInvalidMailboxItemId 错误“项目 ID 不属于当前邮箱”
- sql - 如何查询并获取至少包含已提交值的 SET 的结果集
- python - 'str'对象在django中没有属性'get'属性错误
- c# - 内存流中的 InvalidOperationException
- debugging - ASP.NET MVC - 拒绝从站点执行脚本,因为它的 MIME 类型 ('text/html') 不可执行,并且启用了严格的 MIME 类型检查