例如,我有一个名为“Temp”的文件夹,我想使用PHP删除或刷新该文件夹中的所有文件。我可以这样做吗?
当前回答
Unlinkr函数递归删除给定路径下的所有文件夹和文件,确保它不删除脚本本身。
function unlinkr($dir, $pattern = "*") {
// find all files and folders matching pattern
$files = glob($dir . "/$pattern");
//interate thorugh the files and folders
foreach($files as $file){
//if it is a directory then re-call unlinkr function to delete files inside this directory
if (is_dir($file) and !in_array($file, array('..', '.'))) {
echo "<p>opening directory $file </p>";
unlinkr($file, $pattern);
//remove the directory itself
echo "<p> deleting directory $file </p>";
rmdir($file);
} else if(is_file($file) and ($file != __FILE__)) {
// make sure you don't delete the current script
echo "<p>deleting file $file </p>";
unlink($file);
}
}
}
如果你想删除你放置这个脚本的所有文件和文件夹,然后像下面这样调用它
//get current working directory
$dir = getcwd();
unlinkr($dir);
如果你只想删除PHP文件,那么就像下面这样调用它
unlinkr($dir, "*.php");
您也可以使用任何其他路径删除文件
unlinkr("/home/user/temp");
这将删除home/user/temp目录下的所有文件。
其他回答
$files = glob('path/to/temp/*'); // get all file names
foreach($files as $file){ // iterate files
if(is_file($file)) {
unlink($file); // delete file
}
}
如果你想删除像.htaccess这样的“隐藏”文件,你必须使用
$files = glob('path/to/temp/{,.}*', GLOB_BRACE);
在PHP中删除文件夹中的所有文件的简单和最好的方法
$files = glob('my_folder/*'); //get all file names
foreach($files as $file){
if(is_file($file))
unlink($file); //delete file
}
从这里得到这个源代码- http://www.codexworld.com/delete-all-files-from-folder-using-php/
对我来说,使用readdir的解决方案是最好的,而且非常有效。对于glob,该函数在某些情况下会失败。
// Remove a directory recursively
function removeDirectory($dirPath) {
if (! is_dir($dirPath)) {
return false;
}
if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') {
$dirPath .= '/';
}
if ($handle = opendir($dirPath)) {
while (false !== ($sub = readdir($handle))) {
if ($sub != "." && $sub != ".." && $sub != "Thumb.db") {
$file = $dirPath . $sub;
if (is_dir($file)) {
removeDirectory($file);
} else {
unlink($file);
}
}
}
closedir($handle);
}
rmdir($dirPath);
}
$dir = 'your/directory/';
foreach(glob($dir.'*.*') as $v){
unlink($v);
}
以下代码来自http://php.net/unlink:
/**
* Delete a file or recursively delete a directory
*
* @param string $str Path to file or directory
*/
function recursiveDelete($str) {
if (is_file($str)) {
return @unlink($str);
}
elseif (is_dir($str)) {
$scan = glob(rtrim($str,'/').'/*');
foreach($scan as $index=>$path) {
recursiveDelete($path);
}
return @rmdir($str);
}
}
推荐文章
- 原则-如何打印出真正的sql,而不仅仅是准备好的语句?
- 如何从关联PHP数组中获得第一项?
- PHP/MySQL插入一行然后获取id
- 如何在Python中获得所有直接子目录
- 我如何排序一个多维数组在PHP
- 如何在PHP中截断字符串最接近于一定数量的字符?
- PHP错误:“zip扩展名和unzip命令都没有,跳过。”
- Nginx提供下载。php文件,而不是执行它们
- 即使模板文件存在,Flask也会引发TemplateNotFound错误
- Json_encode()转义正斜杠
- 如何复制在bash所有目录和文件递归?
- 如何在Ruby中创建文件
- 如何在PHP中捕获cURL错误
- 如何要求一个分叉与作曲家?
- __FILE__宏显示完整路径