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

时间:2023年10月04日

/

来源:网络

/

编辑:佚名

在上一篇文章中《PHP删除当前目录下面的所有文件和文件目录》,一些大部分文件都可删除!
但是遇到一个问题,那就是.开头的文章无法解决!
原因解析!
glob 函数是一个通用的文件系统函数,它返回与指定模式匹配的文件名或目录名。当你在 PHP 中使用 glob 函数时,你可能会注意到它无法查找以点(.)开头的文件(如.DS_Store)。
这是因为以点开头的文件在类 UNIX 系统中被视为隐藏文件,不会被常规的文件系统操作显示出来。因此,当你使用 glob 函数搜索文件系统时,系统会默认隐藏以点开头的文件,并且不会返回这些文件名。
如果你想查找以点开头的文件,你可以使用以下方法:
显示搜索:在 glob 函数的模式中包含点开头的文件名,例如:”.” 或 “.DS_Store”。这样会返回以点开头的文件,但也会返回所有其他文件。
使用一个迭代器:可以使用 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);
猜你需要

豫ICP备2021026617号-1  豫公网安备:41172602000185   Copyright © 2021-2028 www.78moban.com/ All Rights Reserved

本站作品均来自互联网,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如有侵犯您的版权,请联系 1565229909#qq.com(把#改成@),我们将立即处理。