精美而实用的网站,关注web编程技术、网站运营、SEO推广,让您轻松愉快的学习

PHP获取指定文件大小、判断文件及目录是否存在、删除文件或目录、复制文件或目录、同时创建多级目录、读取文件内容到字符串中、将字符串写入文件、获取文件名后缀、获取目录大小等。

本函数使用的PHP函数有:file_exists()、mkdir()、filesize、copy、unlink等,这些知识对熟悉PHP中的文件系统操作。

<?php
//PHP判断文件夹和目录是否存在,并获取指定文件大小
class file_dir
{
    //检查目录或文件是否存在
    function check_exist($filename)     
    {
        if(file_exists($filename))
        {
            return true;
        }else   return false;
    }
// 一次只能创建一级目录
function create_dir($dirname,$mode=0777)    
{
    if(is_null($dirname) || $dirname=="")   return false;
    if(!is_dir($dirname))
    {
        return mkdir($dirname,$mode);
    }
}
//可同时创建多级目录
function createDir($aimUrl)     
{
       $aimUrl = str_replace('\\', '/', $aimUrl);
       $aimDir = '';
       $arr = explode('/', $aimUrl);
       foreach ($arr as $str)
       {
        $aimDir .= $str . '/';
           if (!file_exists($aimDir))
           {
               mkdir($aimDir);
           }
       }
}
//删除目录
function delete_dir($dirname)       
{
    if($this->check_exist($dirname) and is_dir($dirname))
    {
        if(!$dirhandle=opendir($dirname)) return false;
        while(($file=readdir($dirhandle))!==false)
        {
            if($file=="." or $file=="..")   continue;
            $file=$dirname.DIRECTORY_SEPARATOR.$file;  //表示$file是$dir的子目录
            if(is_dir($file))
            {
                $this->delete_dir($file);
            }else{
                unlink($file);
            }
        }
        closedir($dirhandle);
        return rmdir($dirname);
    }
            else    return false;
}
//复制目录
function copy_dir($dirfrom,$dirto)      
{
    if(!is_dir($dirfrom))   return false;
    if(!is_dir($dirto))     mkdir($dirto);
    $dirhandle=opendir($dirfrom);
    if($dirhandle)
    {
        while(false!==($file=readdir($dirhandle)))
        {
            if($file=="." or $file=="..")   continue;
            $filefrom=$dirfrom.DIRECTORY_SEPARATOR.$file;  //表示$file是$dir的子目录
            $fileto=$dirto.DIRECTORY_SEPARATOR.$file;
            if(is_dir($filefrom))
            {
                $this->copy_dir($filefrom,$fileto);
            }
            else
            {   if(!file_exists($fileto))
                copy($filefrom,$fileto);
            }
        }
    }
    closedir($dirhandle);
    }
//获取目录大小
function getdir_size($dirname)
{
    if(!file_exists($dirname) or !is_dir($dirname))  return false;
    if(!$handle=opendir($dirname))  return false;
    $size=0;
    while(false!==($file=readdir($handle)))
    {
        if($file=="." or $file=="..")   continue;
        $file=$dirname."/".$file;
        if(is_dir($file))
        {
            $size+=$this->getdir_size($file);
        }else{
            $size+=filesize($file);
        }
 
    }
    closedir($handle);
    return $size;
}
// 单位自动转换函数
function getReal_size($size)
{
    $kb=1024;
    $mb=$kb*1024;
    $gb=$mb*1024;
    $tb=$gb*1024;
    if($size<$kb)    return $size."B";
    if($size>=$kb and $size<$mb)  return round($size/$kb,2)."KB";
    if($size>=$mb and $size<$gb)  return round($size/$mb,2)."MB";
    if($size>=$gb and $size<$tb)  return round($size/$gb,2)."GB";
    if($size>=$tb)   return round($size/$tb,2)."TB";
}
//复制文件
function copy_file($srcfile,$dstfile)
{
    if(is_file($srcfile))
    {
        if(!file_exists($dstfile))
        return copy($srcfile,$dstfile);
        }
    else    return false;
}
//删除文件
function unlink_file($filename)     
{
     if($this->check_exist($filename) and is_file($filename))
     {
        return unlink($filename);
     }else  return false;
}
//获取文件名后缀
function getsuffix($filename)           
{
    if(file_exists($filename) and is_file($filename))
     {
        return end(explode(".",$filename));
     }
}
//将字符串写入文件
function input_content($filename,$str)      
{
     if(function_exists(file_put_contents))
     {
            file_put_contents($filename,$str);
     }else{
            $fp=fopen($filename,"wb");
            fwrite($fp,$str);
            fclose($fp);
     }
}
//将整个文件内容读出到一个字符串中
function output_content($filename)          
{
     if(function_exists(file_get_contents))
        {
            return file_get_contents($filename);
        }else{
            $fp=fopen($filename,"rb");
            $str=fread($fp,filesize($filename));
            fclose($fp);
            return $str;
        }
}
//将文件内容读出到一个数组中
function output_to_array($filename)     
{
     $file=file($filename);
     $arr=array();
     foreach($file as $value)
     {
        $arr[]=trim($value);
     }
     return $arr;
 }
}//类结束
?>

上述文件可保存为file_dir.class.php,使用方法如下:

include 'file_dir.class.php';
$dir=new file_dir;//建立类对象
$size=$dir->getdir_size("D:/wamp/www/class/images");//通过这个类获取指定文件大小
echo $dir->getReal_size($size);//通过这个类获取指定文件大小
Tags:PHP 文件类