• PHP中目录的操作


    文件的操作:创建文件,删除文件,重命名文件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);
    }
    ?>
  • 相关阅读:
    古罗马子串加密
    读《大道至简》有感(四)
    类与对象(作业)
    读《大道至简》有感(三)
    JAVA 加减乘除
    JAVA第三周作业
    【JAVA】数字相加
    读《大道至简》有感(二)
    1.8站立会议之个人
    1.7站立会议之个人
  • 原文地址:https://www.cnblogs.com/Y-HKL/p/5405094.html
Copyright © 2020-2023  润新知