PHP文件系统-目录操作

一、对文件的操作 文件的操作: 创建文件touch(), 删除文件unlink(), 重命名rename, 大小filesize(), 移动复制等 读取 (都有PHP内置函数) 目录的操作: 创建目录(有),删除目录,复制目录, 统计目录大小, 遍历 (自己定义函数) 还有个文件管理系统fileSystem_demo在上面的文件夹中,是用面向对象的方法写的 二、遍历目录: opendir() readdir() closedir() rewinddir() 创建目录:mkdir(); //创建一个空目录 删除目录:rmdir(); //只可以删除空目录 移动或重命名函数:rename('c:/bbbccc', 'phpMyAdmin'); //和文件操作一样 复制目录:需要自己写函数实现 三、遍历目录实现方法 <?php $dirname="phpMyAdmin"; // echo tosize(dirsize($dirname)); $dir=opendir($dirname); // readdir($dir); //开始读的第一个目录是. // readdir($dir); //第二个目录是.. while($fileName=readdir($dir)){ $file=$dirname.'/'.$fileName; if($fileName!="." && $fileName!=".."){ if(is_dir($file)){ echo "<font color='red'>".$fileName."---".date("Y-m-d H:i:s", filectime($file))."----".filetype($file)."-------".toSize(dirsize($file))."-----------------</font><br>"; }else{ echo "<font color='green'>".$fileName."-----".date("Y-m-d H:i:s", filectime($file))."----".filetype($file)."------".toSize(filesize($file))."-------------------</font><br>"; } } } closedir($dir); //把单位为Byte的数转化为具体更大的单位 function toSize($size){ $dw="Bytes"; if($size > pow(2, 30)){ $size=round($size/pow(2, 30), 2); $dw="GB"; }else if($size > pow(2, 20)){ $size=round($size/pow(2, 20), 2); $dw="MB"; }else if($size > pow(2, 10)){ $size=round($size/pow(2, 10), 2); $dw="KB"; }else{ $dw="bytes"; } return $size.$dw; } //计算目录大小的函数 function dirsize($dirname) { $dirsize=0; $dir=opendir($dirname); while($filename=readdir($dir)){ $file=$dirname."/".$filename; if($filename!="." && $filename!=".."){ if(is_dir($file)){ $dirsize+=dirsize($file); //递归完成 }else{ $dirsize+=filesize($file); } } } closedir($dir); return $dirsize; } ?> 四、复制目录函数实现 <?php $dirname="phpMyAdmin"; copydir($dirname, "hello1"); function copydir($dirsrc, $dirto){ if(is_file($dirto)){ echo "目标不是目录不能创建"; return; } if(!file_exists($dirto)){ mkdir($dirto); // echo "创建目录".$dirto."成功!<br>"; } $dir=opendir($dirsrc); while($filename=readdir($dir)){ if($filename!="." && $filename!=".."){ $file1=$dirsrc."/".$filename; $file2=$dirto."/".$filename; if(is_dir($file1)){ copydir($file1, $file2); //递归处理 }else{ copy($file1, $file2); } } } closedir($dir); } ?> 五、删除目录的函数实现 <?php $dirname="phpMyAdmin"; deldir($dirname); function deldir($dirname){ if(file_exists($dirname)) { $dir=opendir($dirname); while($filename=readdir($dir)){ if($filename!="." && $filename!=".."){ $file=$dirname."/".$filename; if(is_dir($file)){ deldir($file); //使用递归删除子目录 }else{ echo '删除文件<b>'.$file.'</b>成功<br>'; unlink($file); } } } closedir($dir); echo '删除目录<b>'.$dirname.'</b>成功<br>'; rmdir($dirname); } ?>
posted @ 2012-04-11 13:25  gxldan  阅读(227)  评论(0编辑  收藏  举报