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);
但是遇到一个问题,那就是.开头的文章无法解决!
原因解析!
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);
新闻资讯 更多
- 【建站知识】查询nginx日志状态码大于400的请求并打印整行04-03
- 【建站知识】Python中的logger和handler到底是个什么?04-03
- 【建站知识】python3拉勾网爬虫之(您操作太频繁,请稍后访问)04-03
- 【建站知识】xpath 获取meta里的keywords及description的方法04-03
- 【建站知识】python向上取整以50为界04-03
- 【建站知识】scrapy xpath遇见乱码解决04-03
- 【建站知识】scrapy爬取后中文乱码,解决word转为html 时cp1252编码问题04-03
- 【建站知识】scrapy采集—爬取中文乱码,gb2312转为utf-804-03