家园首页 Php4手册 我的相册 家园下载 个人文集 给我留言
我形我塑,网络相册,www.5x54.com 相册 相册 心情相册,少女相册 免费申请,我形我塑免费相册
 家园 个人文集   http://www.5x54.com
 


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;
}  
}
?>

收藏此文章     打印  更新     编辑此文章    『关闭窗口』