100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > PHP递归实现文件夹的复制 删除 查看大小等

PHP递归实现文件夹的复制 删除 查看大小等

时间:2022-06-04 23:36:21

相关推荐

PHP递归实现文件夹的复制 删除 查看大小等

后端开发|php教程

php,文件夹,实现

后端开发-php教程PHP虽然提供了 filesize、copy、unlink 等文件操作的函数,但是没有提供 dirsize、copydir、rmdirs 等文件夹操作的函数(rmdir也只能删除空目录)。所以只能手动编写这些函数,主要的技巧是通过递归将问题逐层分解,直到分解成可以直接解决的最小子问题。

dedecms免费源码,vscode 修改界面字体,centos和ubuntu的区别,访问tomcat 404,sqlite 求和,网页设计工资,连接数据库失败可能数据库密码不对或数据库服务器出错!,禁止ip访问服务器,section插件,前端框架有css吗,python3 爬虫教程,php读取图片,菲律宾seo,打包springboot,cms 焦点标签,发布网站源码,微信网页版源码,管理员手册模板,织梦产品后台标题字数,好看的html页面模板免费下载,mfc餐厅管理系统源码,自动化交易程序视频教程lzw

查看文件夹大小

太平洋网站源码,ubuntu 文件被锁住,tomcat启动中的例子,网络爬虫提问,php高并发项目,seo培训seo博客lzw

由于文件夹是没有大小的,平常所说的文件夹尺寸准确的说应该是文件夹中所有文件的总大小。所以只需要将文件夹逐层查找,统计每一层所包含的文件大小,最后将结果从最深的文件夹返回合并。

大商创多用户商城系统V2.7.3源码,用git下载ubuntu,爬虫怎么查询偏移,php token接口,seo什么价格lzw

/** * 文件夹大小 * @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;}

复制文件夹

文件是可以复制的,文件夹是不能复制的(但可以创建),如果要达到复制文件夹的效果,就需要生成一个和原始文件夹相同目录结构的新文件夹,然后将文件按照原目录结构复制到新文件夹。按照递归的思想,不用一开始就生成完整的目录结构,只需要遍历当前目录,发现文件夹不存在再创建即可,然后再将文件复制到对应的文件夹。

/** * 复制文件夹 * @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);}

删除文件夹

rmdir 只能删除空文件夹,而 unlink 可以删除文件。于是删除文件夹的思路就有了,先通过 unlink 删除目录下的所有文件,再通过 rmdir 删除剩下的空文件夹。使用递归处理的逻辑是,找到当前目录下所有文件和文件夹,删除其中的所有文件,再遍历下一层目录删除所有文件……直至最后一层目录,此时整个文件夹已经没有文件了(但是文件夹还在),此时递归开始返回,每向上返回一层就删除这一层的所有空目录,当返回到最顶层的时候,递归就结束了,同时所有的文件和目录也都删除了。

/** * 删除文件夹 * @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);}

剪切文件夹

rename 是 PHP Filesystem 函数中的一个特例,它既可以重命名文件,也可以重命名文件夹。如果你为重命名文件传入不同的路径,它又成了剪切函数,堪称文件函数中小而美的典范。

/** * @param $oldname 必需。规定要重命名的文件或目录。 * @param $newname 必需。规定文件或目录的新名称。 * @param $context 可选。规定文件句柄的环境。 */rename($oldname,$newname,$context);

相关推荐:

php递归函数案例使用详解

PHP(迭代+递归)实现无限级分类详解

PHP数组递归排序实现步骤详解

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。