====================查看文件夹大小=====================函数
因为文件夹是没有大小的,日常所说的文件夹尺寸准确的说应该是文件夹中全部文件的总大小。spa
因此只须要将文件夹逐层查找,统计每一层所包含的文件大小,最后将结果从最深的文件夹返回合并。code
/** * 文件夹大小 * @param $path * @return int */ function dirsize($path) { $size = 0; $handle = opendir($path); while (($item = readdir($handle)) !== false) { if ($item == '.' || $item == '..') continue; $_path = $path . '/' . $item; if (is_file($_path)) $size += filesize($_path); if (is_dir($_path)) $size += dirsize($_path); } closedir($handle); return $size; }
=====================复制文件夹======================blog
文件是能够复制的,文件夹是不能复制的(但能够建立),若是要达到复制文件夹的效果,就须要生成一个和原始文件夹相同目录结构的新文件夹,而后将文件按照原目录结构复制到新文件夹。按照递归的思想,不用一开始就生成完整的目录结构,只须要遍历当前目录,发现文件夹不存在再建立便可,而后再将文件复制到对应的文件夹。递归
/** * 复制文件夹 * @param $source * @param $dest */ function copydir($source, $dest) { if (!file_exists($dest)) mkdir($dest); $handle = opendir($source); while (($item = readdir($handle)) !== false) { if ($item == '.' || $item == '..') continue; $_source = $source . '/' . $item; $_dest = $dest . '/' . $item; if (is_file($_source)) copy($_source, $_dest); if (is_dir($_source)) copydir($_source, $_dest); } closedir($handle); }
=====================删除文件夹======================it
rmdir 只能删除空文件夹,而 unlink 能够删除文件。因而删除文件夹的思路就有了,先经过 unlink 删除目录下的全部文件,再经过 rmdir 删除剩下的空文件夹。使用递归处理的逻辑是,找到当前目录下全部文件和文件夹,删除其中的全部文件,再遍历下一层目录删除全部文件……直至最后一层目录,此时整个文件夹已经没有文件了(可是文件夹还在),此时递归开始返回,每向上返回一层就删除这一层的全部空目录,当返回到最顶层的时候,递归就结束了,同时全部的文件和目录也都删除了。io
/** * 删除文件夹 * @param $path * @return bool */ function rmdirs($path) { $handle = opendir($path); while (($item = readdir($handle)) !== false) { if ($item == '.' || $item == '..') continue; $_path = $path . '/' . $item; if (is_file($_path)) unlink($_path); if (is_dir($_path)) rmdirs($_path); } closedir($handle); return rmdir($path); }
=====================剪切文件夹======================function
rename 是 PHP Filesystem 函数中的一个特例,它既能够重命名文件,也能够重命名文件夹。若是你为重命名文件传入不一样的路径,它又成了剪切函数,堪称文件函数中小而美的典范。class
/** * @param $oldname 必需。规定要重命名的文件或目录。 * @param $newname 必需。规定文件或目录的新名称。 * @param $context 可选。规定文件句柄的环境。 */ rename($oldname,$newname,$context);