目录操作相关函数
函数名 作用 使用方法
opendir() 打开目录句柄 resource opendir ( string $path [, resource $context ] )
readdir() 从目录句柄中读取条目 string readdir ( resource $dir_handle )
closedir() 关闭目录句柄 void closedir ( resource $dir_handle )
rewinddir() 倒回目录句柄 void rewinddir ( resource $dir_handle )
mkdir(); 创建一个空目录
rmdir(); 只可以删除空目录
rename(); 重命名一个文件或目录
例一:
<?php
//实现目录的遍历
$dirname="table";
if(file_exists($dirname)){
$dirRec=opendir($dirname);
while($dirRecName=readdir($dirRec)){
$dirRecPath=$dirname."/".$dirRecName;
if($dirRecName!="." and $dirRecName!=".."){
if(is_dir($dirRecPath)){
echo $dirRecName.' <font color="#006600">文件夹大小为:<b>';
echo fsize(dirsize($dirRecPath)).'</b> 创建的时间:<b>';
echo date("Y-m-d H:i:s",filectime($dirRecPath)).'</b></font><br />';
}else{
echo $dirRecName.' <font color="red">文件大小为:<b>';
echo fsize(filesize($dirRecPath)).'</b> 创建的时间:<b>';
echo date("Y-m-d H:i:s",filectime($dirRecPath)).'</b></font><br />';
}
}
}
closedir($dirRec);
}else{
echo "目录不存在";
}
function fsize($size){ //计算文件的大小单位
$dw="";
if($size>=pow(2,30)){
$size=round($size/pow(2,30),2);
$dw="GB";
}elseif($size>=pow(2,20)){
$size=round($size/pow(2,20),2);
$dw="MB";
}elseif($size>=pow(2,10)){
$size=round($size/pow(2,10),2);
$dw="KB";
}else{
$dw="Byte";
}
return $size.$dw;
}
function dirsize($dirName){ //计算目录的大小
$size=0;
$dirRec=opendir($dirName); //打开目录
while($dirRecName=readdir($dirRec)){ //当目录或文件条目存在时执行
$dirRecPath=$dirName.'/'.$dirRecName; //获得目录或文件完整的路径名
if($dirRecName!="." and $dirRecName!=".."){ //去除上级目录和本级目录的路径
if(is_dir($dirRecPath)){ //判断是否是目录
$size+=dirsize($dirRecPath); //用递归打开目录
}else{
$size+=filesize($dirRecPath); //累计文件大小
}
}
}
closedir($dirRec); //关闭资源
return $size;
}
?>
例二:
<?php
//目录的拷贝函数设计
$dirname="table";
copydir($dirname,"demo1");
function copydir($dirname,$newdir){
if(is_file($dirname) or file_exists($newdir)){ //判断被拷贝的是不是目录,且目标目录不存在
echo '<font color="red"><b>'.$newdir.'已经存在或者'.$dirname.'不是一个目录</b></font><br />';
return;
}else{
mkdir($newdir);
echo "创建".$newdir."目录成功!<br />";
}
$dirres=opendir($dirname);
while($dirfile=readdir($dirres)){
$dirpach=$dirname."/".$dirfile;
$dirtopach=$newdir."/".$dirfile;
if($dirfile!="." and $dirfile!=".."){
if(is_dir($dirpach)){
copydir($dirpach,$dirtopach); //使用递归创建文件目录
}else{
copy($dirpach,$dirtopach);
echo "创建".$dirtopach."文件成功!<br />";
}
}
}
closedir($dirres);
}
?>
例三 :
<?php
//删除目录函数设计
$dirname="demo1";
deldir($dirname);
function deldir($dirname){
if(is_dir($dirname) and file_exists($dirname)){
$dirRes=opendir($dirname);
while($dirResName=readdir($dirRes)){
$dirResPach=$dirname."/".$dirResName;
if($dirResName!="." and $dirResName!=".."){
if(is_dir($dirResPach)){
deldir($dirResPach);
}else{
unlink($dirResPach);
echo '<font color="green">'.$dirResPach.'文件删除成功!</font><br />';
}
}
}
closedir($dirRes);
rmdir($dirname);
echo '<font color="green">'.$dirname.'目录删除成功!</font><br />';
}else{
echo '<font color="red"><b>'.$dirname.'不是一个目录或不存在!</b></font><br />';
}
}
?>