大致就是不知道目录下面又多少层目录, 也不知道又多少文件, 需要统计占用空间大小, 这个可以用在 相册/数据库占用/网络U盘 等程序中.

大致程序思想就是使用递规来计算目录占用空间多少, 然后再把这个占用空间的值写进文本文件里, 那么只要访问这个txt文件就知道占用了多少空间, 不用频繁获取而读磁盘, 节省资源. 每次用户如果上传的文件或者删除了文件, 那么又重新进行统计. 当然, 也可以把统计结果保存到数据库里.

function countDirSize($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;

}

把字节转换为正常的K啊M啊之类的函数:

function get_real_size($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";

}

}

用法很简单:

$size_zip=countDirSize("../zip/");

$size_zip=get_real_size($size_zip);

就这么简单了,呵呵。

/**

* File: fetch user directory use size

* Author: heiyeluren

* Create: 2005-9-19 16:20

* Modifed: 2005-9-19 16:41

*/

/*** 基本函数 ***/

//计算目录大小

function countDirSize(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 saveDirSize(userDir)

{

userDirSize = countDirSize(userDir);

if (!fp = fopen(userDir."/dir_size.txt", "w+")) {

die("Open file failed");

} else {

fwrite(fp, dirSize);

}

}

//获取用户目录的大小

function getDirSize(userDir)

{

user = addslashes(userDir);

sizeFile = userDir."/dir_size.txt";

if (!fp = fopen(sizeFile, "r") {

return 0;

} else {

dirSize = fread(fp, filesize(sizeFile));

}

return dirSize;

}

/*** 调用实例 ***/

user = "heiyeluren";

userPath = "./user/".user;

//如果用户执行了删除或者上传文件的操作就重新获取目录大小

if (action == "upload" || action == "delete") {

saveDirSize(userPath);

}

userDirSize = getDirSize(userPath)/1024;

echo "用户: ".user;

echo "占用空间: ".userDirSize;

?>

目录代码php_php获取某个目录大小的代码相关推荐

  1. android请输入姓名代码,Android获取联系人姓名和电话代码

    在开发中往往有要获取联系人列表的功能,但是这次却不是获取联系人列表,而是在联系人列表点击单个联系人,获取单个联系人的姓名和电话,并设置在指定的输入框内,方便用户的使用:以下是实现的代码: androi ...

  2. php获取上海时间代码,PHP获取星期的方法及代码

    PHP星期几获取代码: 1 date("l"); 2 //data就可以获取英文的星期比如Sunday 3 date("w"); 4 //这个可以获取数字星期比 ...

  3. php点击链接代码,php 获取超链接中文本的代码

    本文分享的这段代码,使用php正则从超链接中提取文本. 例如,可以从Link中,获取文本内容:Link. 代码如下: /** * @从超链接中提取文本 * @param string $url * @ ...

  4. 数值策划的自我修养(二):用VBA批量获取指定目录下文件的名字

    目录索引 批量获取指定目录下文件的名字 批量获取指定目录下文件的名字 游戏项目的管理,自然少不了配置表的管理.今天记录的是如何在制作配置表管理工具时批量获取配置表文件夹下的配置表名并顺序写到一张Exc ...

  5. 拖放获取文件信息的bat代码

    参考:岁月如歌-通过拖曳获取文件信息的bat代码 拖放获取文件信息的bat代码 使用命令行配合7z解压文件时由于每次解压的文件不同,因此搜索了一下拖放识别文件信息的方法,以此方式来减轻工作量 获取文件 ...

  6. php取当天的最后一秒_PHP 获取当天 凌晨 时间戳常用代码

    echo strtotime(date('Y-m-d')); 获取明天凌晨的时间戳 代码:echo strtotime(date('Y-m-d',strtotime('+1 day'))); 附上测试 ...

  7. iOS中使用c函数快速获取一个目录所占的空间大小

    在编写iOS应用时,我们都会大量把服务器的接口调用数据或者图片数据进行缓存,为了更好的使用体验,有时候我们也会把各种缓存的数据所占的空间大小告诉用户,提供给用户参考,并让用户可以手动清除缓存数据,就像 ...

  8. java resource file_Java 获取Resource目录下的文件解决办法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Java 获取Resource目录下的 文件 有两种方式: Java代码中的类,要获取Resource资源 文件目录 下文件 绝对路径寻址 注意这个 / ...

  9. java resouce_Java 获取Resource目录下的文件解决办法

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Java 获取Resource目录下的 文件 有两种方式: Java代码中的类,要获取Resource资源 文件目录 下文件 绝对路径寻址 注意这个 / ...

最新文章

  1. 趣学python3(42)--将字符串格式日期转换为excel的日期格式
  2. edge浏览器设置默认浏览器
  3. java怎么预加载字典值,有选择地显示预加载内容提高网站的性能
  4. [转]恢复 git reset -hard 的误操作
  5. C++算法学习(力扣:1254. 统计封闭岛屿的数目)
  6. abstract class和interface
  7. C语言结构体初始化(转载)
  8. Voxel-Based Global Illumination
  9. 多张pdf怎么合成一张?pdf快速合并法
  10. java 商品库存修改
  11. 怎么选聚氨酯减震弹簧万向轮
  12. Python3.4如何读写Excel
  13. 直流无刷电机仿真分析——基于simulink官方例程BLDC Speed Control
  14. [ctf.show.reverse] re3
  15. leet_241_different_way_add_parenthese(给表达式加括号并求值)
  16. 2022熔化焊接与热切割考试题及答案
  17. 移动大数据平台的架构、实践与数据增值(1)
  18. cos(x)求导为什么是-sin(x)?
  19. 智能机器人与智能系统(大连理工大学庄严教授)——4.自主机器人
  20. 【TA-霜狼_may-《百人计划》】2.1 色彩空间

热门文章

  1. 2. SVM线性分类器
  2. 三层交换机关于VLAN的划分以及ACL的使用
  3. IbatiS关联字段映射
  4. C++利用MySQL API连接和操作数据库
  5. 栈、队列(链表实现)
  6. restframework之节流
  7. IntelliJ IDEA 导入新项目以后的简单配置
  8. [TWLFramework] Singleton
  9. CodeFores 665D Simple Subset(贪心)
  10. VMWare虚拟机空间扩展