PHP文件目录简单操作
2014-04-16 14:35
441 查看
<?php final class dir{ //转换为标准目录结构 static function dir_path($dirname){ $dirname=str_ireplace('\\','/',$dirname);//将\转换为/ return substr($dirname,-1)=='/'?$dirname:$dirname.'/';//目录最后带/ } //获得稳健扩展名,strrchr() 查找指定字符在字符串中的最后一次出现 并返回从这个位置开始以后的字串 static function get_ext($filename){ return substr(strrchr($filename,"."),1); } //获的目录下的子目录和文件,包含子目录下的文件。$dirname目录名,$exts扩展名,$list文件列表 static function tree($dirname,$exts='',$son=0,$list=array()){ $dirname=self::dir_path($dirname);//获得目录 if(is_array($exts)){ $exts=implode("|",$exts);//将多个扩展名用|分隔 } static $id=0; foreach(glob($dirname."*") as $v){//glob — 寻找与模式匹配的文件路径 //echo $v."<br/>"; $id++; if(!$exts || preg_match("/\.($exts)/i",$v)){ //echo "111"; $list[$id]['name']=basename($v);//basename — 返回路径中的文件名部分 $list[$id]['path']=realpath($v);//获得文件绝对路径 $list[$id]['type']=filetype($v);//取得文件类型 $list[$id]['ctime']=filectime($v);//取得文件的 inode 修改时间 $list[$id]['atime']=fileatime($v);//取得文件的上次访问时间 $list[$id]['filesize']=filesize($v);//获得文件大小 $list[$id]['iswrite']=is_writeable($v);//是否可写 $list[$id]['isread']=is_readable($v);//是否可读 } if($son){ if(is_dir($v)){ $list=self::tree($v,$exts,$son,$list); } } } return $list; } //只获得目录结构,$dirname目录名,$son是否遍历子目录,$list存储得到的目录 static function tree_dir($dirname,$pid=0,$son=0,$list=array()){ $dirname=self::dir_path($dirname); static $id=0; foreach(glob($dirname."*") as $v){ if(is_dir($v)){ $id++; $list[$id]['id']=$id; $list[$id]['pid']=$pid; $list[$id]['name']=basename($v); $list[$id]['path']=realpath($v); if($son){ $list=self::tree_dir($v,$id,$son,$list); } } } return $list; } //删除目录 static function del($dirname){ $dirPath=self::dir_path($dirname); if(!is_dir($dirPath)){ return false; } foreach(glob($dirPath."*") as $v){ is_dir($v)?self::del($v):unlink($v);//unlink()删除指定目录下的文件 ,要先删除文件才能删除目录 } return rmdir($dirPath); } //支持层级的目录结构创建 static function create($dirname,$auth="0777"){ $dirPath=self::dir_path($dirname); if(is_dir($dirPath)){ return true; } $dirArr=explode("/",$dirPath);//将目录逐级拆分放到数组中 //var_dump($dirArr); $dir=''; foreach($dirArr as $v){ $dir.=$v.'/'; //echo $dir."<br/>"; if(is_dir($dir)){ continue;//如果目录存在则跳过循环 } mkdir($dir,$auth);//创建目录 } return is_dir($dirPath); } //将指定目录下的所有内容复制到另一个目录 static function copy_dir($oldDir,$newDir){ $oldDir=self::dir_path($oldDir); $newDir=self::dir_path($newDir); if(!is_dir($oldDir)){ error("复制失败:".$oldDir."目录不存在"); } if(!is_dir($newDir)){ self::create($newDir);//如果目录不存在则创建 } foreach(glob($oldDir."*") as $v){ $toFile=$newDir.basename($v);//得到oldDir下的当前目录名或者文件名 //echo $v.'------'.$toFile."<br/>"; if(is_file($toFile)){ continue;//已有的文件不复制 } if(is_dir($v)){//如果toFile还是一个目录,则递归到他的子目录 self::copy_dir($v,$toFile);//将子目录也复制 }else{ copy($v,$toFile);//复制文件内容 chmod($toFile,"0777"); } } return true; } }
测试
//echo dir::get_ext("wenhaolog.php");//获得文件扩展名//print_r(dir::tree("d:/www/myblog/"));//输出d:/www/myblog/目录下的所有目录和文件名。//多的子目录或目录下的文件//$list=dir::tree("d:/www/myblog/blog/","php");//显示指定扩展名的文件,没指定扩展名则也会显示目录//var_dump($list);//$list=dir::tree("d:/www/myblog/blog/","",1);//获得指定目录下的所有子目录和所有文件(包含子目录下的文件)//var_dump($list);//$list=dir::tree("d:/www/myblog/blog/","php|html",1);//获得指定目录下(包含子目录下)的所有php文件和html文件//var_dump($list);//获得子目录//$list=dir::tree_dir("d:/www/myblog/blog/");//获得指定目录下的当前子目录//var_dump($list);//删除目录//$s=dir::del("d:/www/myblog/test");//var_dump($s);//目录创建//dir::create("d:/www/myblog/aaa/aaaaa/aaaaaa/");//复制目录内容$copy=dir::copy_dir("d:/www/myblog/blog","d:/www/myblog/backup");if($copy){echo "备份成功";}
相关文章推荐
- 简单文件/目录操作脚本
- PHP简单实现遍历目录下特定文件的方法小结
- PHP文件操作之获取目录下文件与计算相对路径的方法
- PHP常用技术文之文件操作和目录操作总结
- PHP常用的基本文件和目录操作总结
- php 文件、目录操作函数
- PHP文件目录操作小示例
- php操作ftp上传文件、创建目录、删除文件、删除目录、下载文件到本地
- 【IO面试题】文件操作,如何列出某个目录下的所有文件?如何列出某个目录下的所有子目录?写个简单的例子
- php文件与目录操作(转)
- php之文件与目录的操作
- 【文件/文件夹操作】php文件夹/文件目录操作函数
- PHP创建文件(夹)以及目录操作
- 目录,文件操作详谈―PHP
- PHP创建文件(夹)以及目录操作
- php文件夹/文件目录操作函数
- 跟着辛星学习PHP的文件目录操作
- PHP 文件、正则的一些简单操作
- 几个简单的文件&目录操作函数
- 【php】目录、路径和文件 操作