php目录操作实例代码

  

复制代码 代码如下:

  <?php

  /**

  * listdir

  */

  header("content-type:text/html;charset=utf-8");

  $dirname = "./final/factapplication";

  function listdir($dirname) {

  $ds = opendir($dirname);

  while (false !== ($file = readdir($ds))) {

  $path = $dirname.'/'.$file;

  if ($file != '.' && $file != '..') {

  if (is_dir($path)) {

  listdir($path);

  } else {

  echo $file."<br>";

  }

  }

  }

  closedir($ds);

  }

  listdir($dirname);

  核心:递归的经典应用,以及文件和目录的基本操作。

  

复制代码 代码如下:

  <?php

  /**

  * copydir

  */

  $srcdir = "../fileupload";

  $dstdir = "b";

  function copydir($srcdir, $dstdir) {

  mkdir($dstdir);

  $ds = opendir($srcdir);

  while (false !== ($file = readdir($ds))) {

  $path = $srcdir."/".$file;

  $dstpath = $dstdir."/".$file;

  if ($file != "." && $file != "..") {

  if (is_dir($path)) {

  copydir($path, $dstpath);

  } else {

  copy($path, $dstpath);

  }

  }

  }

  closedir($ds);

  }

  copydir($srcdir, $dstdir);

  核心:copy函数。

  

复制代码 代码如下:

  <?php

  /**

  * deldir

  */

  $dirname = 'a';

  function deldir($dirname) {

  $ds = opendir($dirname);

  while (false !== ($file = readdir($ds))) {

  $path = $dirname.'/'.$file;

  if($file != '.' && $file != '..') {

  if (is_dir($path)) {

  deldir($path);

  } else {

  unlink($path);

  }

  }

  }

  closedir($ds);

  return rmdir($dirname);

  }

  deldir($dirname);

  核心:注意unlink删除的是带path的file。

  

复制代码 代码如下:

  <?php

  /**

  * dirsize

  */

  $dirname = "a";

  function dirsize($dirname) {

  static $tot;

  $ds = opendir($dirname);

  while (false !== ($file = readdir($ds))) {

  $path = $dirname.'/'.$file;

  if ($file != '.' && $file != '..') {

  if(is_dir($path)) {

  dirsize($path);

  } else {

  $tot = $tot + filesize($path);

  }

  }

  }

  return $tot;

  closedir($ds);

  }

  echo dirsize($dirname);

  核心:通过判断$tot在哪里返回,理解递归函数。