PHP中目录操作函数

1、是否是目录

is_dir 判断给定文件名是否是一个目录

  1. $path = dirname(__FILE___);
  2. echo is_dir($path) ? '目录' : '非目录';

2、获取当前的工作目录

getcwd()

  1. echo getcwd(); ///mnt/hgfs/study.com/file

3、相关魔术常量

  1. __FILE__

    文件的完整路径和文件名。如果用在被包含文件中,则返回被包含的文件名。

    自 PHP 4.0.2 起,FILE 总是包含一个绝对路径(如果是符号连接,则是解析后的绝对路径),而在此之前的版本有时会包含一个相对路径。
  1. <?php
  2. echo '该文件位于 " ' . __FILE__ . ' " ';
  3. //输出E:\wamp\www\test\index.php
  4. ?>
  1. __DIR__

    文件所在的目录。如果用在被包括文件中,则返回被包括的文件所在的目录。

    它等价于 dirname(__FILE__)。除非是根目录,否则目录中名不包括末尾的斜杠。
  1. <?php
  2. echo '该文件位于 " ' . __DIR__ . ' " ';
  3. //输出E:\wamp\www\test
  4. ?>

4、磁盘空间

只对磁盘根目录起作用

  • 当前磁盘的总空间 disk_total_space($directory)
  • 当前磁盘的剩余空间 disk_free_space($directory)

5、创建目录

mkdir()

6、删除空目录

rmdir()

7、读目录句柄

  1. $rHandle = opendir($path);
  2. $filename = readdir($rHandle)

8、重置指针

  1. $rHandle = opendir($path);
  2. $filename = readdir($rHandle);
  3. var_dump($filename);
  4. $filename = readdir($rHandle);
  5. var_dump($filename);
  6. $filename = readdir($rHandle);
  7. var_dump($filename);
  8. rewinddir($rHandle); //指针初始化
  9. $filename = readdir($rHandle);
  10. var_dump($filename);

9、复制目录

copy

剪切目录

copy + rmdir

10、重命名目录

rename rmdir

11、关闭目录句柄

closedir

12、chdir() 函数改变当前的目录

13、basename()返回路径中的文件名

14、diename()返回路径中目录部分


递归删除目录下的文件

  1. <?php
  2. // $dir:要删除的文件的目录
  3. function recursiveDelete($dir)
  4. {
  5. // 打开指定目录
  6. if ($handle = @opendir($dir))
  7. {
  8. while (($file = readdir($handle)) !== false)
  9. {
  10. if (($file == ".") || ($file == ".."))
  11. {
  12. continue;
  13. }
  14. if (is_dir($dir . '/' . $file))
  15. {
  16. // 递归
  17. recursiveDelete($dir . '/' . $file);
  18. }
  19. else
  20. {
  21. unlink($dir . '/' . $file); // 删除文件
  22. }
  23. }
  24. @closedir($handle);
  25. rmdir ($dir);
  26. }
  27. }

遍历文件夹下所有文件

  1. <?php
  2. function read_all ($dir){
  3. if(!is_dir($dir)) return false;
  4. $handle = opendir($dir);
  5. if($handle){
  6. while(($fl = readdir($handle)) !== false){
  7. $temp = iconv('GBK','utf-8',$dir.DIRECTORY_SEPARATOR.$fl);//转换成utf-8格式
  8. //如果不加 $fl!='.' && $fl != '..' 则会造成把$dir的父级目录也读取出来
  9. if(is_dir($temp) && $fl!='.' && $fl != '..'){
  10. echo '目录:'.$temp.'<br>';
  11. read_all($temp);
  12. }else{
  13. if($fl!='.' && $fl != '..'){
  14. echo '文件:'.$temp.'<br>';
  15. }
  16. }
  17. }
  18. }
  19. }
  20. read_all('D:\wamp\www\test');
  21. //另一种方法,树形结构显示
  22. tree("alipay");
  23. function tree($directory)
  24. {
  25. $mydir = dir($directory);
  26. echo "<ul>";
  27. while ($file = $mydir->read()) {
  28. if($file != "."&&$file != ".."){
  29. if (is_dir("$directory/$file")) {
  30. echo "<li style='color:blue'>$file</li>";
  31. tree("$directory/$file");
  32. } else{
  33. echo "<li>$file</li>";
  34. }
  35. } } echo "</ul>";
  36. $mydir->close();
  37. }
  38. ?>

获得文件夹大小并格式化

  1. $dir='CMS';
  2. echo getRealSize(getDirSize($dir));
  3. // 获取文件夹大小
  4. function getDirSize($dir)
  5. {
  6. $sizeResult=0;
  7. $handle = opendir($dir);
  8. while (false!==($FolderOrFile = readdir($handle)))
  9. { if($FolderOrFile != "." && $FolderOrFile != "..")
  10. { if(is_dir("$dir/$FolderOrFile"))
  11. { $sizeResult += getDirSize("$dir/$FolderOrFile");
  12. }
  13. else
  14. {
  15. $sizeResult += filesize("$dir/$FolderOrFile");
  16. }
  17. } } closedir($handle);
  18. return $sizeResult;
  19. }
  20. // 单位自动转换函数
  21. function getRealSize($size)
  22. {
  23. $kb = 1024; // Kilobyte
  24. $mb = 1024 * $kb; // Megabyte
  25. $gb = 1024 * $mb; // Gigabyte
  26. $tb = 1024 * $gb; // Terabyte
  27. if($size < $kb)
  28. { return $size." B";
  29. }
  30. else if($size < $mb)
  31. { return round($size/$kb,2)." KB";
  32. }
  33. else if($size < $gb)
  34. { return round($size/$mb,2)." MB";
  35. }
  36. else if($size < $tb)
  37. { return round($size/$gb,2)." GB";
  38. }
  39. else
  40. {
  41. return round($size/$tb,2)." TB";
  42. }
  43. }
  44. /*function getFolderSize($dir)
  45. {
  46. $count_size = 0;
  47. $dir_array = scandir($dir);
  48. foreach ($dir_array as $filename) {
  49. if ($filename != "." && $filename != "..") {
  50. if (is_dir($dir . "/" . $filename)) {
  51. $count_size+= getFolderSize($dir . "/" . $filename);
  52. } else{
  53. $count_size = $count_size + filesize($dir . "/" . $filename);
  54. }
  55. } } return $count_size;
  56. }*/

PHP中目录操作函数的更多相关文章

  1. 【Linux C中文函数手册】之 目录操作函数

    目录操作函数 1)closedir 关闭目录 相关函数: opendir表头文件: #include<sys/types.h> #include<dirent.h>定义函数: ...

  2. Spark Streaming中的操作函数讲解

    Spark Streaming中的操作函数讲解 根据根据Spark官方文档中的描述,在Spark Streaming应用中,一个DStream对象可以调用多种操作,主要分为以下几类 Transform ...

  3. PHP 文件与目录操作函数总结

    >>>文件操作 打开 fopen();    打开文件 读取内容 fread();    从文件指针 handle 读取最多 length 个字节 readfile();    读入 ...

  4. PHP目录操作(附封装好的目录操作函数文件)

    目录函数库常用API $path='test'; var_dump(is_dir($path));//检测是否为目录 echo '<hr/>'; echo getcwd();//得到当前的 ...

  5. Spark Streaming中的操作函数分析

    根据Spark官方文档中的描述,在Spark Streaming应用中,一个DStream对象可以调用多种操作,主要分为以下几类 Transformations Window Operations J ...

  6. linux中目录操作<1>

    一.目录的权限 (1)目录文件的访问权限分为三组,分别为所有者,用户,其他.每个权限组的权限位有3个,分别为读.写.执行. 注意:可以使用stat函数得到目录文件的状态信息.权限为在stat结构中st ...

  7. Python中字符串操作函数string.split('str1')和string.join(ls)

    Python中的字符串操作函数split 和 join能够实现字符串和列表之间的简单转换, 使用 .split()可以将字符串中特定部分以多个字符的形式,存储成列表 def split(self, * ...

  8. VB中字符串操作函数

    Len Len(string|varname) 返回字符串内字符的数目,或是存储一变量所需的字节数. Trim Trim(string) 将字符串前后的空格去掉 Ltrim Ltrim(string) ...

  9. 目录操作函数opendir、readdir和closedir

    首先,明确一个类型DIR的含义: #include <dirent.h> DIR    A type representing a directory stream. DIR是在目录项格式 ...

  10. php中数组操作函数

    一.数组操作的基本函数数组的键名和值array_values($arr);  获得数组的值array_keys($arr);  获得数组的键名array_flip($arr);  数组中的值与键名互换 ...

随机推荐

  1. 领域驱动设计(DDD)实践之路(二):事件驱动与CQRS

    本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/Z3uJhxJGDif3qN5OlE_woA作者:wenbo zhang [领域驱动设计实践之 ...

  2. vivo 悟空活动中台 - 微组件状态管理(下)

    本文首发于 vivo互联网技术 微信公众号 链接: https://mp.weixin.qq.com/s/1DzTYIExVbK0uE_Oc7IHYw作者:悟空中台研发团队 [悟空活动中台]系列往期精 ...

  3. HashMap非线程安全到底有什么问题

    HashMap是Java中常用的数据结构,用于存储键值对,并且提供了快速的查找和插入操作.下面挖掘一下HashMap内部的架构设计思维: 哈希函数的设计: HashMap使用哈希函数将键映射到数组索引 ...

  4. 通义千问预体验,如何让 AI 模型应用“奔跑”在函数计算上?

    立即体验基于函数计算部署通义千问预体验: https://developer.aliyun.com/topic/aigc_fc AIGC 浪潮已来,从文字生成到图片生成,AIGC 的创造力让人惊叹,更 ...

  5. vue 状态管理 五、Module用法

    系列导航 vue 状态管理 一.状态管理概念和基本结构 vue 状态管理 二.状态管理的基本使用 vue 状态管理 三.Mutations和Getters用法 vue 状态管理 四.Action用法 ...

  6. vscode prettier保存代码时自动格式化

    https://blog.csdn.net/qq_37815596/article/details/109225879

  7. freeswitch自带yum源配置方式

    概述 在开发过程中,我们使用freeswitch源代码编译安装的方式比较多,这种方式适合对fs比较了解,有一定基础的研发人员. 但是,对于希望快速上手使用fs普通功能的人员来说,源代码编译的方式就过于 ...

  8. 机器学习-线性分类-SVM支持向量机算法-12

    目录 1. 铺垫 感知器算法模型 2. SVM 算法思想 3. 硬分割SVM总结 支持向量机(Support Vector Machine, SVM)本身是一个二元分类算法,是对感知器算法模型的一种扩 ...

  9. 【南大静态代码分析】作业 2:常量传播和 Worklist 求解器

    作业 2:常量传播和 Worklist 求解器 题目链接:https://tai-e.pascal-lab.net/pa2.html 评测链接:https://oj.pascal-lab.net/pr ...

  10. MoeCTF 2023(西电CTF新生赛)WP

    个人排名 签到 hello CTFer 1.题目描述: [非西电] 同学注意: 欢迎你来到MoeCTF 2023,祝你玩的开心! 请收下我们送给你的第一份礼物: https://cyberchef.o ...