刪除檔案和目錄
刪除檔案
該 unlink
函式刪除一個檔案,並返回該操作是否成功。
$filename = '/path/to/file.txt';
if (file_exists($filename)) {
$success = unlink($filename);
if (!$success) {
throw new Exception("Cannot delete $filename");
}
}
使用遞迴刪除刪除目錄
另一方面,應使用 rmdir
刪除目錄。但是,此功能僅刪除空目錄。要刪除包含檔案的目錄,請先刪除目錄中的檔案。如果目錄包含子目錄,則可能需要遞迴。
以下示例掃描目錄中的檔案,以遞迴方式刪除成員檔案/目錄,並返回已刪除的檔案(而不是目錄)的數量。
function recurse_delete_dir(string $dir) : int {
$count = 0;
// ensure that $dir ends with a slash so that we can concatenate it with the filenames directly
$dir = rtrim($dir, "/\\") . "/";
// use dir() to list files
$list = dir($dir);
// store the next file name to $file. if $file is false, that's all -- end the loop.
while(($file = $list->read()) !== false) {
if($file === "." || $file === "..") continue;
if(is_file($dir . $file)) {
unlink($dir . $file);
$count++;
} elseif(is_dir($dir . $file)) {
$count += recurse_delete_dir($dir . $file);
}
}
// finally, safe to delete directory!
rmdir($dir);
return $count;
}