PHP使用递归读取文件和文件夹 - 得到文件夹内大小

读取文件夹 : 

/**
 * 使用递归遍历读取文件和文件夹
 */
header("content-type:text/html;charset=utf-8");

$dirname = "test";
function listdir($dirname){
    $ds = opendir($dirname);    //创建一个目录资源, 传入的目录就是资源
    while($file = readdir($ds)){    //从目录中读取条目
        //这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹
        $path = $dirname."/".$file;

        //判断,如果是 . 或者 ..的目录就过滤掉
        if($file != "." && $file != ".."){
            if(is_dir($path)){              //判断如果找到的是目录
                echo "目录 : ".$file."
"
; //就打印出找到的文件名 listdir($path); //如果得到是文件夹,然后递归调用一次方法传入的$path文件夹路径就是判断得到的文件夹赋值给$dirname }else{ echo "文件 : ".$file."
"
; //否则就找到打印的文件夹名 } } } } listdir($dirname); ?>

获取文件夹的大小

/**
 * 使用递归遍历获取文件夹的大小
 */
header("content-type:text/html;charset=utf-8");

$dirname = "test2";
function totdir($dirname){
    static $tot;    //这里把$tot定义为静态的,表示$tot全局只有这一个变量
    $ds = opendir($dirname);    //创建一个目录资源, 传入的目录就是资源
    while($file = readdir($ds)){    //从目录中读取到条目
        //这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹
        $path = $dirname."/".$file;

        //判断,如果是 . 或者 ..的目录就过滤掉
        if($file != "." && $file != ".."){
            if(is_dir($path)){              //判断如果找到的是目录
                totdir($path);  //如果得到是文件夹,然后递归调用一次方法传入的$path文件夹路径就是判断得到的文件夹赋值给$dirname
            }else{
                $tot += filesize($path);
            }
        }
    }
    return $tot."    bytes";
}
echo totdir($dirname);
?>

删除目录 : 

/**
 * PHP删除目录、复制目录和移动目录
 */
header("content-type:text/html;charset=utf-8");

$dirname = "test";  //目录路径
function deldir($dirname){
    $ds = opendir($dirname);    //创建一个目录资源, 传入的目录就是资源
    while($file = readdir($ds)){    //从目录中读取到条目
        //这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹
        $path = $dirname."/".$file;

        //判断,如果是 . 或者 ..的目录就过滤掉
        if($file != "." && $file != ".."){
            if(is_dir($path)){             //判断如果找到的是目录
                deldir($path);
            }else{
                unlink($path);
            }
        }
    }
    closedir($ds); //关闭目录资源
    return rmdir($dirname);
}


var_dump(deldir($dirname));

?>

复制目录 : 


/**
 * PHP删除目录、复制目录和移动目录
 */
header("content-type:text/html;charset=utf-8");

$srcDir = "test";  //目录路径
$dstDir = "test2";  //目录路径
function copydir($srcDir,$dstDir){
    if(!is_dir($dstDir)){   //这里判断一下目标路径是否存在,不存在则创建
        mkdir($dstDir); //创建目标路径
    }
    $ds = opendir($srcDir);    //创建一个目录资源, 传入的目录就是资源

    while($file = readdir($ds)){    //从目录中读取到条目
        //这里的$path 表示这个路径下的文件夹,如果不这么去定义,里边执行递归语句的时候,找不到是那个文件夹
        $path = $srcDir."/".$file;  //这里的 $file表示的是 test下的条目.所以使用的时候需要用绝对路径在前面加上$srcDir
        $dstpath = $dstDir."/".$file;
        //判断,如果是 . 或者 ..的目录就过滤掉
        if($file != "." && $file != ".."){
            if(is_dir($path)){             //判断如果找到的是目录
                copydir($path,$dstpath);    //如果是文件夹,那么传过去的$path就表示文件夹的绝对地址
            }else{
                copy($path,$dstpath);       //如果是文件夹,那么传过去的$path就表示文件的绝对地址
            }
        }
    }
    closedir($ds); //关闭目录资源
}

copydir($srcDir,$dstDir);

?>


你可能感兴趣的:(PHP)