我有一个目录/main
,其中包含这些文件夹中的文件夹和文件。
我想保留目录/主要但删除其中的所有内容:
$di = new RecursiveDirectoryIterator('/main');
foreach (new RecursiveIteratorIterator($di) as $filename => $file) {
if(!is_dir($filename)){
unlink($filename);
}
};
这是删除文件夹中的文件,/main
留下一个空文件夹列表,如何删除这些文件?
我知道这应该可以在循环中集成,我尝试了rmdir
但没有成功。
答案 0 :(得分:2)
试试此代码
$dir = '/home/XXXXX/public_html/';
foreach(glob($dir.'*.*') as $v){
echo $v;
// unlink($v);
}
destroy_dir($dir);
function destroy_dir($dir) {
if (!is_dir($dir) || is_link($dir)) return unlink($dir);
foreach (scandir($dir) as $file) {
if ($file == '.' || $file == '..') continue;
if (!destroy_dir($dir . DIRECTORY_SEPARATOR . $file)) {
chmod($dir . DIRECTORY_SEPARATOR . $file, 0777);
if (!destroy_dir($dir . DIRECTORY_SEPARATOR . $file)) return false;
};
}
return rmdir($dir);
}
此处未对代码进行测试。
答案 1 :(得分:0)
function delete_directory_files($dirname) {
if (is_dir($dirname))
$dir_handle = opendir($dirname);
if (!$dir_handle)
return false;
while($file = readdir($dir_handle)) {
if ($file != "." && $file != "..") {
if (!is_dir($dirname."/".$file))
unlink($dirname."/".$file);
else
delete_directory($dirname.'/'.$file);
}
}
closedir($dir_handle);
return true;
}