在上一篇文章中《
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);