php如何获取文件夹大小程序代码

 代码如下 复制代码

<?php
 
//获取文件夹大小
function dir_size($dir) {
    if (!preg_match('#/$#', $dir)) {
        $dir .= '/';
    }
    $totalsize = 0;
    //调用文件列表
    foreach (get_file_list($dir) as $name) {
        $totalsize += (@is_dir($dir.$name) ? dir_size("$dir$name/") :
            (int)@filesize($dir.$name));
    }
    return $totalsize;
}
 
//获取文件列表
function get_file_list($path) {
    $f = $d = array();
    //获取所有文件
    foreach (get_all_files($path) as $name) {
        if (@is_dir($path.$name)) {
            $d[] = $name;
        } else if (@is_file($path.$name)) {
            $f[] = $name;
        }
    }
    natcasesort($d);
    natcasesort($f);
    return array_merge($d, $f);
}
 
//获取所有文件
function get_all_files($path) {
    $list = array();
    if (($hndl = @opendir($path)) === false) {
        return $list;
    }
    while (($file=readdir($hndl)) !== false) {
        if ($file != '.' && $file != '..') {
            $list[] = $file;
        }
    }
    closedir($hndl);
    return $list;
}
 
//转换单位
function setupSize($fileSize) {
    $size = sprintf("%u", $fileSize);
    if($size == 0) {
        return("0 Bytes");
    }
    $sizename = array(" Bytes", " KB", " MB", " GB", " TB", " PB", " EB", " ZB", " YB");
    return round($size/pow(1024, ($i = floor(log($size, 1024)))), 2) . $sizename[$i];
}
 
//目录
$path = './test_dir/';
 
//显示文件列表
print_r(get_file_list($path)).'<br>';
 
//显示文件大小
echo dir_size($path).'<br>';
 
//显示转换过单位的大小
echo setupSize(dir_size($path));
 
?>

dir_size() 是获取文件夹大小的函数,函数中使用了递归的方法,此函数需要调用 get_file_list() ,获取文件夹中的所有文件列表,如果文件列表中有文件夹存在,就调用 get_all_files() 获取文件夹下的文件列表。由此取得目标文件夹的大小。

setupSize() 是将传人的大小转换为易于读取的文件单位,可以转换成 Bytes, KB, MB, GB, TB, PB, EB, ZB, YB 等单位。

列2

 代码如下 复制代码

<?php

function getDirSize($dir)
    {
        $handle = opendir($dir);
        while (false!==($FolderOrFile = readdir($handle)))
        {
            if($FolderOrFile != "." && $FolderOrFile != "..")
            {
                if(is_dir("$dir/$FolderOrFile"))
                {
                    $sizeResult += getDirSize("$dir/$FolderOrFile");
                }
                else
                {
                    $sizeResult += filesize("$dir/$FolderOrFile");
                }
            }   
        }
        closedir($handle);
        return $sizeResult;
    }

    // 单位自动转换函数
    function getRealSize($size)
    {
        $kb = 1024;         // Kilobyte
        $mb = 1024 * $kb;   // Megabyte
        $gb = 1024 * $mb;   // Gigabyte
        $tb = 1024 * $gb;   // Terabyte
       
        if($size < $kb)
        {
            return $size." B";
        }
        else if($size < $mb)
        {
            return round($size/$kb,2)." KB";
        }
        else if($size < $gb)
        {
            return round($size/$mb,2)." MB";
        }
        else if($size < $tb)
        {
            return round($size/$gb,2)." GB";
        }
        else
        {
            return round($size/$tb,2)." TB";
        }
    }

    echo getRealSize(getDirSize(dirname($_SERVER[SCRIPT_FILENAME])./include/));

?>

#########################################################

//function dirsize($dir)
//{
//   $handle=opendir($dir);
//   $size = 0;
//   while ( $file=readdir($handle) )
//   {
//       if ( ( $file == "." ) || ( $file == ".." ) ) continue;
//       if ( is_dir("$dir/$file") )
//           $size += dirsize("$dir/$file");
//       else
//           $size += filesize("$dir/$file");
//   }
//   closedir($handle);
//   return $size;
//}
//$big=dirsize(dirname($_SERVER[SCRIPT_FILENAME])."/");
//echo $big;

得到的结果是小数点后两位的

$big*1024 得到单位为KB

时间: 2024-10-02 09:38:58

php如何获取文件夹大小程序代码的相关文章

获取文件夹大小(PHP函数)

函数 <?php     // 获取文件夹大小    function getDirSize($dir)    {         $handle = opendir($dir);        while (false!==($FolderOrFile = readdir($handle)))        {             if($FolderOrFile != "." && $FolderOrFile != "..")     

PHP获取文件夹大小函数用法实例

  本文实例讲述了PHP获取文件夹大小函数用法.分享给大家供大家参考.具体如下: ? // 获取文件夹大小 function getDirSize($dir) { $handle = opendir($dir); while (false!==($FolderOrFile = readdir($handle))) { if($FolderOrFile != "." && $FolderOrFile != "..") { if(is_dir("

PHP获取文件夹大小函数用法实例_php技巧

本文实例讲述了PHP获取文件夹大小函数用法.分享给大家供大家参考.具体如下: <?php // 获取文件夹大小 function getDirSize($dir) { $handle = opendir($dir); while (false!==($FolderOrFile = readdir($handle))) { if($FolderOrFile != "." && $FolderOrFile != "..") { if(is_dir(

Asp.Net 文件操作基类(读取,删除,批量拷贝,删除,写入,获取文件夹大小,文件属性,遍历目录)_实用技巧

复制代码 代码如下: using System; using System.IO; using System.Text; using System.Data; using System.Web.UI; using System.Web.UI.WebControls; namespace ec { /// <summary> /// 文件操作类 /// </summary> public class FileObj : IDisposable { private bool _alre

PHP中获取文件扩展名程序代码

方法一,我自己最的一种获取扩展名方法  代码如下 复制代码 function extend_2($file_name) { $extend = pathinfo($file_name); $extend = strtolower($extend["extension"]); return $extend; } 方法二,利用explode函数与end函数组合操作  代码如下 复制代码 function get_extension($file) { return end(explode('

php获取文件mime类型程序代码

mime_content_type返回指定文件的MIME类型, 用法:  代码如下 复制代码 echo mime_content_type ( 'php.gif' ) . "n" ; echo mime_content_type ( 'test.php' ); 输出: image/gif text/plain 但是此函数在php5.3.0以后就不可用了,如果你是php5.3.0以后版本我们可使用  代码如下 复制代码 $finfo    = finfo_open(FILEINFO_MI

PHP获取文件夹内文件数的方法_php技巧

本文实例讲述了PHP获取文件夹内文件数的方法.分享给大家供大家参考.具体实现方法如下: function getfilecounts($ff){ $dir = './'.$ff; $handle = opendir($dir); $i = 0; while(false !== $file=(readdir($handle))){ if($file !== '.' && $file != '..') { $i++; } } closedir($handle); return $i; } 希望

asp获取文件或文件夹大小代码

大小财产用于返回的大小,以字节为单位,指定的文件或文件夹. 语法 FileObject.Size FolderObject.Size   例如File对象 <% dim fs,f set fs=Server.CreateObject("Scripting.FileSystemObject") set f=fs.GetFile("c:test.asp") Response.Write("The size of test.asp is: ")

在java中如何获取文件夹占用空间的大小?(注意这里不是问文件夹大小)

问题描述 一般情况下,文件夹大小和文件夹占用空间是不一样的,如附件所示.在java中,如果要求文件夹大小,可以通过逐个文件大小的累加而获得.但是如果在java中要获取文件夹占用空间,有什么办法? 问题补充:suziwen 写道 解决方案 下面的代码 得JDK1.6以上的double used = ((file.getTotalSpace() - file.getFreeSpace()) / 1024.0 / 1024 / 1024);double total = file.getTotalSpa