loading ...
loading...

2008-09-16 | php目录操作类

分享
标签: 目录  file  false  filetime  return 

<?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);
  }
  //如给出的目录不存在或者不是一个有效的目录,则返回
        if(!file_exists($dir)||!is_dir($dir)){
            return false;
  //如果目录不可读,则返回
        } elseif(!is_readable($dir)){
            return false;
  } else {
   //打开目录,
            $dirs= opendir($dir);
   //当目录不空时,删除目录里的文件
            while (false!==($entry=readdir($dirs))) {
                //过滤掉表示当前目录的"."和表示父目录的".."
                if ($entry!="."&&$entry!="..") {
                    $path=$dir."/".$entry;
                    //为子目录,则递归调用本函数
                    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);
  }
  //如给出的目录不存在或者不是一个有效的目录,则返回
        if(!file_exists($dir)||!is_dir($dir)){
            return false;
  }
  //打开目录,
  $dirs= opendir($dir);
  //把目录下的目录信息写入数组
  $i = 0;
  while (false!==($entry=readdir($dirs))) {
   //过滤掉表示当前目录的"."和表示父目录的".."
   if ($entry!="."&&$entry!="..") {
    $path=$dir."/".$entry;
    //为子目录,则采集信息
    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);
  }
  //如给出的目录不存在或者不是一个有效的目录,则返回
        if(!file_exists($dir)||!is_dir($dir)){
            return false;
  }
  //打开目录,
  $dirs= opendir($dir);
  //把目录下的文件信息写入数组
  $i = 0;
  while (false!==($entry=readdir($dirs))) {
   //过滤掉表示当前目录的"."和表示父目录的".."
   if ($entry!="."&&$entry!="..") {
    $path=$dir."/".$entry;
    //为子目录,则采集信息
    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;

}
 
 
 
}

 

 

 

?>

分享 分享 |  评论 (0) |  阅读 (?)  |  固定链接 |  发表于 09:11
搜狐博客温馨提示:警惕博客留言诈骗, 搜狐博客管理员的正确地址为http://admin.blog.sohu.com, 其他都是冒牌。搜狐博客官方不会要求参加活动的各位博友缴纳任何的手续费用。请勿轻信留言、评论中的中奖信息,更不要拨打陌生电话及向陌生帐户汇款,谨防受骗!识别更多网络骗术,请 点击查看详情
您还未登录,只能匿名发表评论。或者您可以 登录 后发表。
 
  注册会员,数码相机 iPod nano等超多好礼免费拿!(倒计时:仅剩8天)
表  情:
加载中...
回复通知: 同时用小纸条通知对方该回复