PHP文件操作

来源:互联网 发布:html模板仿淘宝 编辑:程序博客网 时间:2024/06/06 16:26

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

函数

<?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);}
原创粉丝点击