PHP中目录的操作

Posted on 2016-04-18 17:02  Y-HKL  阅读(299)  评论(0编辑  收藏  举报

文件的操作:创建文件,删除文件,重命名文件rename(),移动/复制文件,读取,大小(PHP都有内置的函数)

目录的操作:创建目录(有),删除目录,复制目录,统计目录大小,遍历(自己定义函数)


    一.遍历目录
        opendir()
        readdir()
        closedir()
        rewinddir()

<?php
$dirname="phpMyAdmin";
echo "文件总大小:".toSize(dirsize($dirname))."<br>";
    //opendir()打开一个目录句柄
    $dir=opendir($dirname);
    //readdir()从目录句柄中读取条目
    while($fileName=readdir($dir)){
        //要判断$dirname目录下的文件
        $file=$dirname."./".$fileName;
        //删除文件读取中的“.”和“..”
        if($fileName!='.'&&$fileName!=".."){
            //is_dir()判断的是当前目录下的文件
            if(is_dir($file)){
                //统计目录大小是没有内置的函数,所以我们要自己定义
                echo "<font color='red'>".$fileName."---".date('Y-m-d H-i-s',fileatime($file))."------".toSize(dirsize($file))."-------<br>";
                echo "</font><br>";
            }else{
                echo $fileName."-----".toSize(filesize($file))."------"."<br>";
            }
        }
    }
    //closedir()关闭目录句柄
    closedir($dir);

    //文件大小单位转换函数
    function toSize($size){
        $dw="";
        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="BT";
        }
        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;
    }
?>

 


        创建目录
            mkdir();新建一个空目录

   删除目录没有内置函数,要自定义
        删除目录

     rmdir();删除一个空目录

<?php
//创建一个空目录
//mkdir("update",755);

//删除目录,只能删除空目录
//rmdir("update");

$dirname="./mYphp";

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)){
                    echo "删除目录".$file."成功!<br>";
                    deldir($file);
                }else{
                    unlink($file);
                }
            }
        }
        closedir($dir);
        rmdir($dirName);
    }
}
?>

 


          
        文件、目录的重命名和移动
            rename();

<?php
$dirName="./phpMyAdmin";
//文件改名
rename("$dirName", "aaa");

$dirName="./aaa";
//文件移动
rename("$dirName","../aaa");
?>

 


        复制目录
            要自定义

<?php
/*复制目录没有内置函数,所以我们要自己定义*/

$dirname="./phpMyAdmin";

copydir($dirname,"./aaa");

//目录的复制函数
function copydir($dirsrc,$dirto){
    //判断目标是否是目录
    if(is_file($dirto)){
        echo "目标不是目录";
        return ;
    }
    //判断要复制到得目录是否存在
    if(!file_exists($dirto)){
        mkdir($dirto);
    }
    //打开目录
    $dir=opendir($dirsrc);
    while($fileName=readdir($dir)){
        if($fileName!="." && $fileName!=".."){
            $fileSrc=$dirsrc."./".$fileName;
            $fileTo=$dirto."./".$fileName;

            if(is_dir($fileSrc)){
                //递归
                copydir($fileSrc,$fileTo);
            }else{
                //文件的复制函数
                copy($fileSrc, $fileTo);
            }
        }
    }
    closedir($dir);
}
?>