php读取大文件和递归的思想,PHP使用递归读取文件和文件夹 - 得到文件夹内大小...

读取文件夹 :/**

* 使用递归遍历读取文件和文件夹

*/

$dirname = "test";function listdir($dirname){

$ds = opendir($dirname);    //创建一个目录资源, 传入的目录就是资源    while($file = readdir($ds)){    //从目录中读取条目

//这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹

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

//判断,如果是 . 或者 ..的目录就过滤掉        if($file != "." && $file != ".."){            if(is_dir($path)){              //判断如果找到的是目录                echo "目录 : ".$file."
";  //就打印出找到的文件名

listdir($path);  //如果得到是文件夹,然后递归调用一次方法传入的$path文件夹路径就是判断得到的文件夹赋值给$dirname

}else{                echo "文件 : ".$file."
";  //否则就找到打印的文件夹名

}

}

}

}

listdir($dirname);

获取文件夹的大小/**

* 使用递归遍历获取文件夹的大小

*/

$dirname = "test2";function totdir($dirname){    static $tot;    //这里把$tot定义为静态的,表示$tot全局只有这一个变量

$ds = opendir($dirname);    //创建一个目录资源, 传入的目录就是资源    while($file = readdir($ds)){    //从目录中读取到条目

//这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹

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

//判断,如果是 . 或者 ..的目录就过滤掉        if($file != "." && $file != ".."){            if(is_dir($path)){              //判断如果找到的是目录

totdir($path);  //如果得到是文件夹,然后递归调用一次方法传入的$path文件夹路径就是判断得到的文件夹赋值给$dirname

}else{

$tot += filesize($path);

}

}

}

return $tot." bytes";

}

echo totdir($dirname);

删除目录 :/**

* PHP删除目录、复制目录和移动目录

*/

$dirname = "test";  //目录路径function deldir($dirname){

$ds = opendir($dirname);    //创建一个目录资源, 传入的目录就是资源    while($file = readdir($ds)){    //从目录中读取到条目

//这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹

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

//判断,如果是 . 或者 ..的目录就过滤掉

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

if(is_dir($path)){             //判断如果找到的是目录

deldir($path);

}else{

unlink($path);

}

}

}

closedir($ds); //关闭目录资源

return rmdir($dirname);

}

var_dump(deldir($dirname));

复制目录 :/**

* PHP删除目录、复制目录和移动目录

*/

$srcDir = "test";  //目录路径

$dstDir = "test2";  //目录路径function copydir($srcDir,$dstDir){    if(!is_dir($dstDir)){   //这里判断一下目标路径是否存在,不存在则创建

mkdir($dstDir); //创建目标路径

}

$ds = opendir($srcDir);    //创建一个目录资源, 传入的目录就是资源    while($file = readdir($ds)){    //从目录中读取到条目

//这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹

$path = $srcDir."/".$file;  //这里的 $file表示的是 test下的条目.所以使用的时候需要用绝对路径在前面加上$srcDir

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

//判断,如果是 . 或者 ..的目录就过滤掉        if($file != "." && $file != ".."){            if(is_dir($path)){             //判断如果找到的是目录

copydir($path,$dstpath);    //如果是文件夹,那么传过去的$path就表示文件夹的绝对地址

}else{

copy($path,$dstpath);       //如果是文件夹,那么传过去的$path就表示文件的绝对地址

}

}

}

closedir($ds); //关闭目录资源

}

copydir($srcDir,$dstDir);

本文来自投稿,不代表访得立场,如若转载,请注明出处:http://www.found5.com//view/149.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值