简单的文件系列函数,包装成类,学习文件处理中。。。。
来源:互联网 发布:金蝶软件系统参数 编辑:程序博客网 时间:2024/05/01 23:14
类文件:
<?php/** * 文件系统管理类 ,简单的熟悉文件操作函数 * 本类将包含下面功能: * 1.浏览当前目录下的文件 * 2.打开上/下一级目录 * 3.新建/删除文件夹/文件 * 4.统计文件大小 * @author prg 2014/02/28 */define('SEP', DIRECTORY_SEPARATOR); //定义分隔符class MyDirectory{//这里定义为扫描windows文件的字符编码,指读取这两种字符//但是任然不能打开中文文件夹下面的子文件加????private static $enclist = array('UTF-8', 'GBK');private $dir_handle;//dir resourceprivate $path;//当前路径private $arr_file;//存储当前目录的文件/夹private $cur_script;//取得当前运行的脚本private $dir_size = FALSE;//是否统计文件夹大小function __construct($path){$this->path = $path;if(file_exists($path)){$this->dir_handle = opendir($this->path);}$this->cur_script = basename($_SERVER['SCRIPT_FILENAME']);//获取当前脚本名称}/** * 设置是否统计文件夹大小 * @param bool $flag */function setDirsize($flag){if(is_bool($flag)){$this->dir_size = $flag;}}/** * 获取父路径 * @param string $path * @return string */private function ParentPath($path){$i=strlen($path)-1;for(;$i>=0;$i--){if($path{$i}==SEP){$path = substr($path, 0,$i);break;}}return $path;}/** * 扫描当前目录 * @return boolean */private function scanCurDir(){if(!is_resource($this->dir_handle)){return false;}while(($file=readdir($this->dir_handle))!==false){if($file!='.'&&$file!='$RECYCLE.BIN'){$mb=mb_detect_encoding($file,self::$enclist);$file = iconv($mb, 'UTF-8', $file);if($file!='..'){$this->arr_file[$file] = $this->getFileInfo($this->path.SEP.$file);}else{$this->arr_file[$file] = array(0,0);}}}return true;}/** * 获取目录结构 * @return Ambigous <multitype:number , NULL, multitype:string, multitype:string Ambigous <string, int> > */function getDirectory(){$res = $this->scanCurDir();if(!$res){return null;}foreach ($this->arr_file as $k=>$v){if(is_dir($this->path.SEP.$k)){if(strpos('..',$k)!==false){$str= "<a href='".$this->cur_script."?path=".$this->ParentPath($this->path)."&k=".rand(1,100)."'>$k</a>";}else {$str= "<a href='".$this->cur_script."?path=".$this->path.SEP.$k."&k=".rand(1,100)."'>$k</a>";}}else{$str = $k;}array_unshift($this->arr_file[$k],$str);}return $this->arr_file;}/** * 取得文件的修改时间和大小 * @param string $path * @return NULL|multitype:string */private function getFileInfo($path){if(!file_exists($path)){return array(0,0);}clearstatcache();$filemtime= date("Y-m-d H:i:s",filemtime($path));$filesize = 0;//获取的文件类型$type= filetype($path);if($type=='file'){$filesize = filesize($path);}elseif($this->dir_size) //获取问价夹大小{$this->getDirSize($path, $filesize);}$filesize = $this->changeSize($filesize);$arr_info = array('file_mtime'=>$filemtime,'file_size'=>$filesize);return $arr_info;}/** * 递归,获取文件 文件夹大小 * @param string $dir * @param int $size */private function getDirSize($dir,&$size){//这里不是一个文件夹直接返回文件大小if(!is_dir($dir)){$size = filesize($dir);return ;}$dir_h = opendir($dir);if(!$dir_h){$size = 0;return;}while(($file=readdir($dir_h))!==FALSE){if($file!='.'&&$file!='..'){if(is_dir($dir.SEP.$file)){$this->getDirSize($dir.SEP.$file, $size);}else{$size+=filesize($dir.SEP.$file);}}}return;}/** * 转换大小 * @param int $size * @return string */private function changeSize($size){if($size<1024){$size.='B';}elseif($size<1024*1024){$size=ceil($size/1024).'KB';}elseif($size<1024*1024*1024){$size=ceil($size/(1024*1024)).'MB';}else{$size=ceil($size/(1024*1024*1024)).'GB';}return $size;}public function getIsDirsize(){return $this->dir_size;}/** * 创建目录 * @param string $name * @return boolean */public function createDir($name){$name = $this->path.SEP.$name;if(file_exists($name)){echo '目录已经存在';return false;}return mkdir($name,'777');}/** * 删除目录 * @param string $name */public function deleteDir($name){$name = $this->path.SEP.$name;if(!file_exists($name)){echo '要删除的目录不存在';return false;}return rmdir($name);}/** * 删除文件 * @param string $name * @return boolean */public function deleteFile($name){$name = $this->path.SEP.$name;if(!is_file($name)||!file_exists($name)){echo '删除的不是文件,或者文件不存在';return false;}return unlink($name);}/** * 重命名文件/文件夹 * @param string $old * @param string $new * @return bool */public function renameFIle($old,$new){$old = $this->path.SEP.$old;if(!file_exists($old)){echo '要更改的文件不存在 ';return false;}$tmp = $this->path.SEP.$new;if(file_exists($new)){echo '文件名',$new,'已经存在';return false;}return rename($old, $tmp);}}?>
调用文件:
<?phpheader('Content-type:text/html;charset=utf-8');require_once 'directory.class.php';@$path = $_GET['path'];if(!isset($path)){$path='D:';}$di = new MyDirectory($path);$di->setDirsize(TRUE);$arr_list = $di->getDirectory();$cdir = $di->getIsDirsize()?'Yes':'No';$h = '<h2>目录结构<small>子目录大小?'.$cdir.'</small><h2>';echo $h,'<hr><table width="50%">';echo '<tr><td>文件名</td><td>创建时间</td><td>大小</td></tr>';foreach ($arr_list as $key=>$val){echo '<tr>';foreach($val as $v){echo '<td>',$v,'</td>';}echo '</tr>';}echo '</table>';//$di->createDir('123')//mkdir(iconv('UTF-8', 'gbk', 'D:\我的文件夹'));?>
0 0
- 简单的文件系列函数,包装成类,学习文件处理中。。。。
- 简单的文件处理类
- 文件的简单处理
- 简单的文件处理
- 简单的文件处理
- asp 中常用的文件处理函数
- asp 中常用的文件处理函数
- asp中常用的文件处理函数
- asp中常用的文件处理函数
- asp 中常用的文件处理函数
- asp 中常用的文件处理函数
- Java 文件处理简单工具函数
- Makefile 学习之简单的文件编译处理
- Python学习笔记--处理log文件的简单小程序
- 一个关于文件中位运算的的处理函数。
- "Python"学习笔记----简单文件处理
- 函数包装器,函数私有类处理
- delphi中有关磁盘文件管理/处理的函数
- GridView动态添加一编辑行
- 内核编译错误提示
- select timeout or -1
- 小米2S MI2S eclipse adb连接不上手机,解决办法
- ReentrantReadWriteLock读写锁的使用
- 简单的文件系列函数,包装成类,学习文件处理中。。。。
- ResultSet需要注意的问题
- ScroolView卷轴视图
- 生产者消费者问题理解与Java实现
- 内存模型
- python 给urllib.quote的字符串格式化出现ValueError: unsupported format character
- linux ps命令讲解
- [深入浅出Cocoa]iOS网络编程之CFNetwork
- 更新界面 void android.view.View.invalidate()