PHP中目录操作函数

1、是否是目录

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

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

2、获取当前的工作目录

getcwd()

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

3、相关魔术常量

  1. __FILE__

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

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

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

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

4、磁盘空间

只对磁盘根目录起作用

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

5、创建目录

mkdir()

6、删除空目录

rmdir()

7、读目录句柄

$rHandle = opendir($path);
$filename = readdir($rHandle)

8、重置指针

$rHandle = opendir($path);

$filename = readdir($rHandle);
var_dump($filename); $filename = readdir($rHandle);
var_dump($filename); $filename = readdir($rHandle);
var_dump($filename); rewinddir($rHandle); //指针初始化 $filename = readdir($rHandle);
var_dump($filename);

9、复制目录

copy

剪切目录

copy + rmdir

10、重命名目录

rename rmdir

11、关闭目录句柄

closedir

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

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

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


递归删除目录下的文件

<?php
// $dir:要删除的文件的目录
function recursiveDelete($dir)
{
// 打开指定目录
if ($handle = @opendir($dir))
{
while (($file = readdir($handle)) !== false)
{
if (($file == ".") || ($file == ".."))
{
continue;
}
if (is_dir($dir . '/' . $file))
{
// 递归
recursiveDelete($dir . '/' . $file);
}
else
{
unlink($dir . '/' . $file); // 删除文件
}
}
@closedir($handle);
rmdir ($dir);
}
}

遍历文件夹下所有文件

<?php
function read_all ($dir){
if(!is_dir($dir)) return false; $handle = opendir($dir); if($handle){
while(($fl = readdir($handle)) !== false){
$temp = iconv('GBK','utf-8',$dir.DIRECTORY_SEPARATOR.$fl);//转换成utf-8格式
//如果不加 $fl!='.' && $fl != '..' 则会造成把$dir的父级目录也读取出来
if(is_dir($temp) && $fl!='.' && $fl != '..'){
echo '目录:'.$temp.'<br>';
read_all($temp);
}else{
if($fl!='.' && $fl != '..'){ echo '文件:'.$temp.'<br>';
}
}
}
}
}
read_all('D:\wamp\www\test');
//另一种方法,树形结构显示
tree("alipay");
function tree($directory)
{
$mydir = dir($directory);
echo "<ul>";
while ($file = $mydir->read()) {
if($file != "."&&$file != ".."){
if (is_dir("$directory/$file")) {
echo "<li style='color:blue'>$file</li>";
tree("$directory/$file");
} else{
echo "<li>$file</li>";
}
} } echo "</ul>";
$mydir->close();
}
?>

获得文件夹大小并格式化

$dir='CMS';
echo getRealSize(getDirSize($dir));
// 获取文件夹大小
function getDirSize($dir)
{
$sizeResult=0;
$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";
}
} /*function getFolderSize($dir)
{
$count_size = 0;
$dir_array = scandir($dir);
foreach ($dir_array as $filename) {
if ($filename != "." && $filename != "..") {
if (is_dir($dir . "/" . $filename)) {
$count_size+= getFolderSize($dir . "/" . $filename);
} else{
$count_size = $count_size + filesize($dir . "/" . $filename);
}
} } return $count_size;
}*/

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. 技术文档 | 免下载、0配置、多任务并发,在Docker Image中使用OpenSCA

    想跳过下载步骤快速使用OpenSCA检测代码风险?想实现多个项目并发扫描? 在Docker Image中使用OpenSCA即可轻松实现.一起来look look 目的 方便用户使用最新版本的 Open ...

  2. Redhat5 和Redhat6安装oracle11g

    oralce安装本人认为最麻烦的就是oracle包的版本和oracle的依赖的包的问题,这个做不好后期安装过程就会出现很多诡异的问题,这里总结一下Redhat5 和Redhat6安装oracle11g ...

  3. P5731

    https://www.luogu.com.cn/problem/P5731 这道题被标为红题,真实难度应该介于红题和橙题之间,问题在于我高估了它的难度,以为至少有橙题的难度,一般不打表的我毫不犹豫选 ...

  4. 开源项目《Elight.MVC-ASP.NET》的研究学习

    一   观看效果 将源码下载来后,发现不能直接运行,读了一下md文件,发现还要做自己一些改动. 由于我本机是sqlserver,  所以我改了下 appsetting.json 里要使用的数据库,然后 ...

  5. 类的MRO属性 C3算法

    C3算法 class A(object): pass class B(A): pass class C(A): pass class D(B): pass class E(C): pass class ...

  6. Linux 系统安全加固经验总结

    本文为博主原创,转载请注明出处: 目录  1. 禁止root密码登录 2. linux 用户密钥复杂度及有效期设置 3. 检查sudo权限 4.关闭ftp 5.设置文件的属主并指定读写执行权限 6.管 ...

  7. Oracle官网下载软件需要登录Oracle账户问题

    问题描述 当我们在Oracle官网上下载JDK时,(JDK下载地址)系统会提示需要登录Oracle账户.对于没有Oracle账户的人来说,注册账户太繁琐. 没有账户怎么办??? 此处推荐一个靠谱的网站 ...

  8. [转帖]聊聊字符串数据长度和nls_length_semantics参数

    字符串是我们设计数据库经常用到的类型,从传统的ASCII格式到UTF-8格式,不同应用需求对应不同的字符类型和长度配置.针对Oracle而言,最常用的类型无外乎char和varchar2两个基本类型. ...

  9. JDBC针对SQLServer的sendStringParametersAsUnicode=false的验证

    JDBC针对SQLServer的sendStringParametersAsUnicode=false的验证 背景 部分客户的SQLServer数据库出现了大量死锁的情况. 虽然部分客户并没有反馈死锁 ...

  10. [转帖]OpenSSL版本历史

    OpenSSL版本历史 新闻日志 这是所有 OpenSSL 公告的简洁日志.它们几乎是发布通知. 日期物品 2021 年 7 月 29 日OpenSSL 3.0 的 Beta 2 现已推出.这是一个候 ...