巅云智能建站平台搭建版(创业流派版)火爆上线,毕生受权!新增:文章智能收罗+全站真静态打包+都会分站+智能小法式+不法词过滤+H5自顺应+智能链词等功效功效概况
赞助文档Help

PHP递归完成文件夹的复制、删除、查抄巨细操纵示例

一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-25 14:41:30 阅读数: 108

本文实例报告了PHP递归完成文件夹的复制、删除、查抄巨细操纵。分享给大师供大师参考,具体以下:

PHP固然供给了 filesize、copy、unlink 等文件操纵的函数,可是不供给 dirsize、copydir、rmdirs 等文件夹操纵的函数(rmdir也只能删除空目次)。以是只妙手动编写这些函数,首要的技能是经由过程递归将题目逐层分化,直到分化成能够间接处置的最小子题目。

查抄文件夹巨细

因为文件夹是不巨细的,泛泛所说的文件夹尺寸精确的说应当是文件夹中一切文件的总巨细。以是只要要将文件夹逐层查找,统计每层所包罗的文件巨细,最初将成果从最深的文件夹前往归并。

/**
 * 文件夹巨细
 * @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文件操纵总结》、《PHP常常利用遍历算法与技能总结》、《PHP数据布局与算法教程》、《php法式设想算法总结》、《PHP数组(Array)操纵技能大全》及《php字符串(string)用法总结》

但愿本文所述对大师PHP法式设想有所赞助。

一佰互联是天下着名建站品牌办事商,咱们有九年、网站建造、网页设想、php开辟和域名注册及假造主机办事经历,供给的办事更是天下着名。比来几年来还整合团队上风自立开辟了可视化多用户”“3.0平台版,拖拽排版网站建造设想,轻松完成pc站、手机微网站、小法式、APP一体化全网营销网站扶植 ,已胜利的为天下上百家收集公司供给自助建站平台搭建办事。

相干动静more

17
05月
曾我做网站扶植时我就注重到了这些焦点要点?

window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":... >>概况

18
04月
批发企业自建商城网站已经是局势所趋

此刻传统门店与商城网站的市场占比此消彼长,良多的良多的批发商巨子也起头逐步转型做收集营销。比来传出动静,屈臣氏的电子商城行将上线。除批发业... >>概况

27
04月
PHP Cookei记实用户汗青阅读信息的代

【根本】Cookie常常利用体例:$_COOKIE[‘RecordLuHuiDUDU"] 获得Cookiesetcookie(‘RecordLu... >>概况

03
05月
如许做更有益于网站的收录

本身连系本身的经历和大师常常犯的毛病,总结了一下,但愿大师能够当真看一看: 1、不要收罗过量的文章。若是你网站的文章大批来自于收罗、或是... >>概况

高端网站扶植

美工统筹SEO,为企业电子商务营销助力!

德律风:

023-85725751
建站

产物

域名注册 假造主机 云办事器 企业邮局
智能建站 APP打包 微站/小法式 创业平台
网站推行 媒体营销 智能收罗 AI机械人
400德律风 短信营销 店销机械人
私家定制 流派网站