Jump to content

[SOLVED] Deleting Not Empty Folder.


oceans

Recommended Posts

Dear People,

 

Does any one know how to delete a folder completely (with or with out any content in it).

 

Situation I am having:

 

I upload 3 files into a new folder, and rename the folder.

I only see 3 files in it, yes it is correct, but when I see property of the folder, it says I have 4 files! ( I confirm I did not put any hidden files).

 

Now, the problem comes, when I delete the files. Since I know the exact name of the 3 files, I delete them, but when I want to remove the folder, complaint is the folder is not empty!

 

I all tricks I can, I can’t solve it, any one who could help me, thanks.

 

Link to comment
https://forums.phpfreaks.com/topic/52598-solved-deleting-not-empty-folder/
Share on other sites

<?php
function removeDirectory($dir) {
    if (!is_dir($dir)) return false;
    $handle = opendir($dir);
    while (($file = readdir($handle)) !== false) {
         if ($file == "." || file == "..") continue;
         if (is_dir($dir . DIRECTORY_SEPARATOR . $file)) removeDirectory($dir . DIRECTORY_SEPARATOR . $file);
         else unlink($dir . DIRECTORY_SEPARATOR . $file);
    }
    closedir($dir);
    rmdir($dir);
}
?>

While being almost the same as Glyde's, this works for me:

<?php
function delete_folder($folder)
{
if(!is_dir($folder))
{
	trigger_error("'{$folder}' is not a folder", E_USER_ERROR);
	return false;
}

$folder = str_replace('\\', '/', $folder);

if($folder[strlen($var)-1] == '/')
{
	$folder = substr($folder,0,strlen($folder)-1);
}

$dh = opendir($folder);
while($item = readdir($dh))
{
	if($item == '.' || $item == '..')
	{
		continue;
	}

	if(is_dir("{$folder}/{$item}"))
	{
		delete_folder("{$folder}/{$item}");
	}
	else {
		unlink("{$folder}/{$item}");
	}
}
closedir($dh);

return rmdir($folder);
}
?>

Heres the one i use

 

<?php
function recursive_remove_directory($directory, $empty=FALSE)
{
// if the path has a slash at the end we remove it here
if(substr($directory,-1) == '/')
{
	$directory = substr($directory,0,-1);
}

// if the path is not valid or is not a directory ...
if(!file_exists($directory) || !is_dir($directory))
{
	// ... we return false and exit the function
	return FALSE;

// ... if the path is not readable
}elseif(!is_readable($directory))
{
	// ... we return false and exit the function
	return FALSE;
// ... else if the path is readable
}else{

	// we open the directory
	$handle = opendir($directory);

	// and scan through the items inside
	while (FALSE !== ($item = readdir($handle)))
	{
		// if the filepointer is not the current directory
		// or the parent directory
		if($item != '.' && $item != '..')
		{
			// we build the new path to delete
			$path = $directory.'/'.$item;

			// if the new path is a directory
			if(is_dir($path)) 
			{
				// we call this function with the new path
				recursive_remove_directory($path);

				// if the new path is a file
			}else{
				// we remove the file
				unlink($path);
			}
		}
	}
	// close the directory
	closedir($handle);

	// if the option to empty is not set to true
	if($empty == FALSE)
	{
		// try to delete the now empty directory
		if(!rmdir($directory))
		{
			// return false if not possible
			return FALSE;
		}
	}
	// return success
	return TRUE;
}
}

?>

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.