php目录操作类
<?php $newdirs=new Dirs(); //使用方法 //创建目录 /* $dirname="aa/bb"; $newdirs->mkDirs($dirname); */ //删除目录 如果$rmself=false,则不删除本目录,否则删除本目录,默认$rmself=true /* $dirname="wangwang"; $newdirs->rmDirs($dirname,$rmself=true); */ //浏览目录下的文件 /* $dirname="aa"; $files=$newdirs->getFiles($dirname); print_r($files); */ //浏览浏览目录小的文件夹 /* $dirname="aa"; $dirs=$newdirs->getFolders($dirname); print_r($dirs); */ //获取目录大小(单位字节) /* $dirname="aa"; $foldersize=$newdirs->getFolderSize($dirname); echo $foldersize; */ /* *作者:旭日 *Email:54ano@163.com *个人网站:http://www.zhengjingde.com */ /* *@说明:目录和文件操作类 *@类名:Dirs *@方法:mkDirs($dir),创建多重目录 *@方法:rmDirs($dir,$rmself=true),删除及清空目录 *@方法:delFile($file),删除文件 *@方法:createFile($file,$content="",$mode="w"),创建文件 *@方法:getFolders($dir),获取目录下的文件夹信息 *@方法:getFiles($dir),获取目录下的文件信息 *@方法:getFileSize($file)获取文件的大小 *@属性:$mFolders,遍历目录下的文件夹信息的数组 *@属性:$mFiles,遍历目录下的文件信息的数组 */ class Dirs { // 遍历的目录数组 var $mFolders = Array(); // 遍历的文件数组 var $mFiles = Array(); var $mDateTime = "Y-m-d H-i-s"; var $mTimeOffset = 8; var $aa=0; /* *@创建多重目录 *@mkDirs($dir) *@参数$dir:目录的绝对路径 *@所创建的目录的权限全部为0777 *@创建失败有提示,成功无返回 */ function mkDirs ($dir) { $dir = str_replace("\\","/",$dir); $dirs = explode('/', $dir); $total = count($dirs); $temp = ''; for($i=0; $i<$total; $i++) { $temp .= $dirs[$i].'/'; if (!is_dir($temp)) { if (!@mkdir($temp)) exit("不能建立目录 $temp"); // 改变目录权限 为0777 @chmod($temp, 0777); } } } /* *@删除多重目录及文件 *@清空目录下的所有子目录及文件 *@rmDirs($dir, $rmself) *@参数$dir:目录的绝对路径 *@参数$rmself:如果$rmself=false,则不删除本目录,否则删除本目录,默认$rmself=true *@删除成功返回true,否则返回false */ function rmDirs ($dir, $rmself = true) { //如果给定路径末尾包含"/",先将其删除 if(substr($dir,-1)=="/"){ $dir=substr($dir,0,-1); } //如给出的目录不存在或者不是一个有效的目录版权保护,请不要随意复制^%#$32529)98sa。^_^,则返回 if(!file_exists($dir)||!is_dir($dir)){ return false; //如果目录不可读版权保护,请不要随意复制^%#$32529)98sa。^_^,则返回 } elseif(!is_readable($dir)){ return false; } else { //打开目录版权保护,请不要随意复制^%#$32529)98sa。^_^, $dirs= opendir($dir); //当目录不空时版权保护,请不要随意复制^%#$32529)98sa。^_^,删除目录里的文件 while (false!==($entry=readdir($dirs))) { //过滤掉表示当前目录的"."和表示父目录的".." if ($entry!="."&&$entry!="..") { $path=$dir."/".$entry; //为子目录版权保护,请不要随意复制^%#$32529)98sa。^_^,则递归调用本函数 if(is_dir($path)){ $this->rmDirs($path); //为文件直接删除 } else { unlink($path); } } } //关闭目录 closedir($dirs); //当$rmself==false时,只清空目录里的文件及目录,$rmself=true时,也删除$dir目录 if($rmself){ //删除目录 if(!rmdir($dir)){ return false; } return true; } } } /* *@删除文件 *@删除失败返回false,否则返回true */ function delFile ($file) { if ( !is_file($file) ) return false; @unlink($file); return true; } /* *@创建文件 *@方法:createFile ($file, $content, $mode); *@参数$file:文件的绝对路径 *@参数$content:创建文件时添加入文件的内容 *@参数$mode:$mode=w时,内容清空后添加进入,$mode=a,内容添加在已有内容的尾部,默认为w *@创建失败返回false,否则返回true */ function createFile ($file, $content="", $mode="w") { if ( in_array($mode, array("w", "a")) ) $mode = "w"; if ( !$hd = fopen($file, $mode) ) return false; if ( !false === fwrite($hd, $content) ) return false; return true; } /* *@浏览目录 */ function getFolders ($dir) { $this->mFolders = Array(); //如果给定路径末尾包含"/",先将其删除 if(substr($dir,-1)=="/"){ $dir=substr($dir,0,-1); } //如给出的目录不存在或者不是一个有效的目录版权保护,请不要随意复制^%#$32529)98sa。^_^,则返回 if(!file_exists($dir)||!is_dir($dir)){ return false; } //打开目录版权保护,请不要随意复制^%#$32529)98sa。^_^, $dirs= opendir($dir); //把目录下的目录信息写入数组 $i = 0; while (false!==($entry=readdir($dirs))) { //过滤掉表示当前目录的"."和表示父目录的".." if ($entry!="."&&$entry!="..") { $path=$dir."/".$entry; //为子目录版权保护,请不要随意复制^%#$32529)98sa。^_^,则采集信息 if(is_dir($path)){ $filetime = @filemtime($path); $filetime = @date($this->mDateTime, $filetime+3600*$this->mTimeOffset); // 目录名 $this->mFolders[$i]['name'] = $entry; // 目录最后修改时间 $this->mFolders[$i]['filetime'] = $filetime; // 目录大小,不计,设为0 $this->mFolders[$i]['filesize'] = 0; $i++; } } } return $this->mFolders; } /* *@浏览文件 */ function getFiles ($dir) { $this->mFiles = Array(); //如果给定路径末尾包含"/",先将其删除 if(substr($dir,-1)=="/"){ $dir=substr($dir,0,-1); } //如给出的目录不存在或者不是一个有效的目录版权保护,请不要随意复制^%#$32529)98sa。^_^,则返回 if(!file_exists($dir)||!is_dir($dir)){ return false; } //打开目录版权保护,请不要随意复制^%#$32529)98sa。^_^, $dirs= opendir($dir); //把目录下的文件信息写入数组 $i = 0; while (false!==($entry=readdir($dirs))) { //过滤掉表示当前目录的"."和表示父目录的".." if ($entry!="."&&$entry!="..") { $path=$dir."/".$entry; //为子目录版权保护,请不要随意复制^%#$32529)98sa。^_^,则采集信息 if(is_file($path)){ $filetime = @filemtime($path); $filetime = @date($this->mDateTime, $filetime+3600*$this->mTimeOffset); $filesize = $this->getFileSize($path); // 文件名 $this->mFiles[$i]['name'] = $entry; // 文件最后修改时间 $this->mFiles[$i]['filetime'] = $filetime; // 文件的大小 $this->mFiles[$i]['filesize'] = $filesize; $i++; } } } return $this->mFiles; } /* *@获取文件的大小:字节,KB,MB,GB */ function getFileSize ($file) { if ( !is_file($file) ) return 0; $f1 = $f2 = ""; $filesize = @filesize("$file"); // 大于1GB以上的文件 if ( $filesize > 1073741824 ) { // 大于1MB以上的文件 } elseif ( $filesize > 1048576 ) { $filesize = $filesize / 1048576; list($f1, $f2) = explode(".",$filesize); $filesize = $f1.".".substr($f2, 0, 2)."MB"; // 大于1KB小于1MB的文件 } elseif ( $filesize > 1024 ) { $filesize = $filesize / 1024; list($f1, $f2) = explode(".",$filesize); $filesize = $f1.".".substr($f2, 0, 2)."KB"; // 小于1KB的文件 } else { $filesize = $filesize."字节"; } return $filesize; } /* 获取目录大小 */ function getFolderSize($dir) { if($handle=opendir($dir)){ while (false !== ($file = readdir($handle))) { if($file!="." && $file!=".."){ if(is_dir($dir."/".$file)){ $this->getFolderSize($dir."/".$file); }else{ $this->aa+=filesize($dir."/".$file); } } } } return $this->aa; } } ?>
收藏此文章 打印 更新 编辑此文章 『关闭窗口』