PHP文件操作

关于文件的递归删除目录:注意理清楚各个路径的使用即可

函数

<?php //删除目录,须知:文件dir只能删除空的,删除文件夹用:rmdir(),删除文件unlink(); //利用句柄当指针使用:readdir(); function del($path) { //去掉错误的路径,自己格式化一次 $path = rtrim($path,'/'); //打开句柄 $resuoce = opendir($path); while(false !== $fileName=(readdir($resuoce))){ if($fileName=='.'||$fileName=='..')continue; //echo $path.'/'.$fileName.'<br />'; $fileNew = $path.'/'.$fileName; //下面的参数必须是一个完整的路径,而不是文件名 if(is_dir($fileNew)){ del($fileNew); }else{ unlink($fileNew); } } //删除空目录的顺序需要在关闭资源之后,因为:不能删除一个为关闭的资源,相当于删除一个已经打开的文件一个道理; closedir($resuoce);//参数是被打开的资源 rmdir($path);//删除函数的参数必须是原打开的路径因为是递归遍历,而且需要删除自己打开的资源 } // 调用 $path = './include'; del($path); 
关于文件复制的递归函数:注意理清楚各个路径的使用即可

函数

<?php
/**
*   函数功能复制一个目录到指定的地方
* @param URL 需要复制的路径
* @param URL 指定存放的路径
*/
function copy_file($path,$to_path)
{

    //格式化代码,按照要求防止输入参数和符合
    $path= rtrim($path, '/');
    $to_path= rtrim($to_path, '/');
    if($path== '.' || $path== '..' || $to_path== '.' || $to_path== '..') return false;

    //防止源目录不存在和目标目录存在
    if(!file_exists($path)  || !is_dir($path)) return false;

    // if(!file_exists($src)){echo 1;}
    if(!file_exists($to_path) || !is_dir($to_path)) mkdir($to_path);

    //打开dir  打开句柄
    $resouce = opendir($path);
    //循环遍历dir  
    //while(false !== $dirNewName=(readdir($resouce))){
    while(false !== $dirNewName=(readdir($resouce))){

        //防止文件向上递归读取
        if($dirNewName=='.'||$dirNewName=='..')continue;

            //递归需要的路径
            $new_path = $path.'/'.$dirNewName;
            //复制目标需要的路径
            $copy_fileN = $to_path.$new_path;
            //echo $copy_fileN.'<hr />';
            //递归文件夹
            if(is_dir($new_path)){
               // echo $new_path.'<hr />';
                //复制文件夹,在递归之前执行是个逻辑顺序问题,必须要先有文件夹,下面的文件才有地方可放
                mkdir($copy_fileN,0777,true);//这里使用的路径不能是自己的,要目标的;
                //echo $to_path.'<hr />';
                copy_file($new_path,$to_path);//第二个参数只是起到一个开头引导作用,和函数体内的拼接目录作用,所以写原来 即可;
            }else{
                copy($new_path,$copy_fileN);//参数一:是源目标路径,参数二:刚刚创建在指定位置的新目录路径
            }
        }
        closedir($resouce);

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值