PHP如果遇到.开头的文件,为什么删除不了?

在上一篇文章中《PHP删除当前目录下面的所有文件和文件目录》,一些大部分文件都可删除!

但是遇到一个问题,那就是.开头的文章无法解决!

原因解析!

glob 函数是一个通用的文件系统函数,它返回与指定模式匹配的文件名或目录名。当你在 PHP 中使用 glob 函数时,你可能会注意到它无法查找以点(.)开头的文件(如.DS_Store)。

这是因为以点开头的文件在类 UNIX 系统中被视为隐藏文件,不会被常规的文件系统操作显示出来。因此,当你使用 glob 函数搜索文件系统时,系统会默认隐藏以点开头的文件,并且不会返回这些文件名。

如果你想查找以点开头的文件,你可以使用以下方法:

  1. 显示搜索:在 glob 函数的模式中包含点开头的文件名,例如:”.” 或 “.DS_Store”。这样会返回以点开头的文件,但也会返回所有其他文件。
  2. 使用一个迭代器:可以使用 PHP SPL(标准 PHP 库)中的 DirectoryIterator 类或 RecursiveDirectoryIterator 类来迭代遍历目录,然后通过调用 getFilename() 方法来获取所有文件名,包括以点开头的文件名。

例如:

$dir = new RecursiveDirectoryIterator(__DIR__);
$iterator = new RecursiveIteratorIterator($dir);
$files = array();
foreach ($iterator as $file) {
    if (!$file->isDir() && $file->getFilename()[0] === '.') {
        $files[] = $file->getPathname();
    }
}

print_r($files);
© 版权声明
THE END
喜欢就支持一下吧
点赞14
评论 抢沙发

请登录后发表评论

    暂无评论内容