龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

目录操作类

时间:2014-07-22 14:50来源: 作者: 点击:
分享到:
span style=color:#323232;font-family:Century Gothic, 微软雅黑, 幼圆, Arial, Verdana;font-size:16px;line-height:32px;background-color:#FFFFFF;可以实现目录/span b占用空间大小统计/b span style=color:#323232;font-family:Centu
可以实现目录 占用空间大小统计 目录[文件]可读判断 目录[文件]可写判断
<?php
class Dir{
	private $_dir;
	/**
	 * 目录类
	 * @author 李俊[duguying2008@gmail.com]
	 * @param string $dir 目录
	 */
	function __construct($dir) {
		$this->_dir=$dir;
	}
	/**
	 * 计算目录大小
	 * @param string $dir 目录
	 * @return number 字节
	 */
	public function dirSize($dir=null){
		if ($dir==null) {
			$dir=$this->_dir;
		}
		if (!is_string($dir)) {
			throw new Exception('目录名必须为string类型!');
		}
		$size=0;
		$items=scandir($dir);
		foreach ($items as $item) {
			if (is_file($dir.'/'.$item)) {
				$size=$size+filesize($dir.'/'.$item);
			}elseif (is_dir($dir.'/'.$item)&&'.'!=$item&&'..'!=$item){
				$size=$size+$this->dirSize($dir.'/'.$item);
			}
		}
		return $size;
	}
	/**
	 * 判断文件或目录可读
	 * @author 李俊
	 * @param string $dir 目录名
	 * @return bool
	 */
	function readable($dir=null) {
		if ($dir==null) {
			$dir=$this->_dir;
		}
		if (!is_string($dir)) {
			throw new Exception('目录名必须为string类型!');
		}
		if (($frst=file_get_contents($dir))&&is_file($dir)) {
			return true;//是文件,并且可读
		}else {//是目录
			if (is_dir($dir)&&scandir($dir)) {
				return true;//目录可读
			}else {
				return false;
			}
		}
	}
	/**
	 * 判断文件或目录是否可写
	 * @author 李俊
	 * @param string $dir 目录名
	 * @return bool
	 */
	function writeable($dir=null) {
		if ($dir==null) {
			$dir=$this->_dir;
		}
		if (!is_string($dir)) {
			throw new Exception('目录名必须为string类型!');
		}
		if (is_file($dir)) {//对文件的判断
			return is_writeable($dir);
		}elseif (is_dir($dir)) {
			//开始写入测试;
			$file='_______'.time().rand().'_______';
			$file=$dir.'/'.$file;
			if (file_put_contents($file, '//')) {
				unlink($file);//删除测试文件
				return true;
			}else {
				return false;
			}
		}else {
			return false;
		};
	}	
}
精彩图集

赞助商链接