Chinaunix首页 | 论坛 | 博客
  • 博客访问: 29999951
  • 博文数量: 2065
  • 博客积分: 10377
  • 博客等级: 上将
  • 技术积分: 21525
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-04 17:50
文章分类

全部博文(2065)

文章存档

2012年(2)

2011年(19)

2010年(1160)

2009年(969)

2008年(153)

分类:

2010-08-27 08:26:48

$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
*个人网站:
*/

/*
*@说明:目录和文件操作类
*@类名: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;
/*
*@创建多重目录
)
*@参数$dir:目录的绝对路径
*@所创建的目录的权限全部为0777
*@创建失败有提示,成功无返回
*/
function mkDirs ($dir) {
$dir = str_replace(");
$dirs = explode('/', $dir);
$total = count($dirs);
$temp = '';
for($i=0; $i<$total; $i++) {
$temp .= $dirs[$i].'/';
if (!is_dir($temp)) {
if ()) exit("不能建立目录 $temp");
// 改变目录权限 为0777
@chmod($temp, 0777);
}
}
}
/*
*@删除多重目录及文件
*@清空目录下的所有子目录及文件
, $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;

}



}

 

 

 

?>

阅读(1143) | 评论(0) | 转发(0) |
0

上一篇:Etag和Expires

下一篇:linux which 命令详解

给主人留下些什么吧!~~