PHP目录的遍历,目录大小,目录删除,目录剪切,目录复制操作

  1 <?php
  2 /*
  3 *    Version 1.0
  4 *    2014-12-11
  5 *    文件夹的操作
  6 *    删除,大小统计,移动,复制
  7 *    文件夹的分割使用linux方式
  8 *    
  9 */
 10 //文件间的删除
 11 function delete_dir($dir){
 12     $dir = rtrim(str_replace("\\","/",$dir),'/').'/';//统一格式,避免格式问题出错
 13     if(!file_exists($dir)){
 14         exit("{$dir} is not exists!Check your input!");
 15     }
 16     $dh = opendir($dir);
 17     readdir($dh);
 18     readdir($dh);
 19     while($fileName = readdir($dh)){
 20         $newFileName = $dir.$fileName;
 21         if(is_file($newFileName)){
 22             if(unlink($newFileName)){
 23                 echo 'File Delete '.$newFileName.' Successfully!<br />';
 24             }
 25         }else if(is_dir($newFileName)){
 26             $newDir = $newFileName.'/';
 27             delete_dir($newDir);
 28         }else{
 29             echo "{$newFileName} Unkown File Type!<br />";
 30         }
 31     }
 32     closedir($dh);
 33     if(rmdir($dir)){
 34         echo 'Delete Dir '.$dir.' Successfully!<hr />';
 35     }
 36 }
 37 //文件夹大小统计
 38 function calc_dir($dir){
 39     $dir = rtrim(str_replace("\\","/",$dir),'/').'/';
 40     if(!file_exists($dir)){
 41         exit("{$dir} is not exists!Check your input!");
 42     }
 43     $dh = opendir($dir);
 44     $size = 0;
 45     readdir($dh);
 46     readdir($dh);
 47     while($fileName = readdir($dh)){
 48         $newFileName = $dir.$fileName;
 49         if(is_file($newFileName)){
 50             $size += filesize($newFileName);
 51         }else if(is_dir($newFileName)){
 52             $newDir = $newFileName.'/';
 53             $size += calc_dir($newDir);
 54         }else{
 55             echo "{$newFileName} Unkown File Type!<br />";
 56         }
 57     }
 58     closedir($dh);
 59     return $size;
 60 }
 61 //文件夹的移动
 62 function cut_dir($dir,$des){
 63     //$dir待移动目录,$des目标目录
 64     if(!file_exists($dir)){
 65         exit($dir.' is not exists!Please check your input!');
 66     }
 67     if(!file_exists($des)){
 68         mkdir($des);
 69     }
 70     $dir = rtrim(str_replace("\\","/",$dir),'/');
 71     if(strrpos($dir,'/')){
 72         $subdir = substr($dir,strrpos($dir,'/')+1);
 73     }else{
 74         $subdir = $dir;
 75     }
 76     $dessub = rtrim(str_replace("\\","/",$des),"/").'/'.$subdir.'/';
 77     $dir = $dir.'/';
 78     if(!file_exists($dessub)){
 79         mkdir($dessub);
 80     }
 81     $dh = opendir($dir);
 82     readdir($dh);
 83     readdir($dh);
 84     while($fileName = readdir($dh)){
 85         $newFileName = $dir.$fileName;
 86         if(is_file($newFileName)){
 87             if(rename($newFileName,$dessub.$fileName)){
 88                 echo $newFileName.'已经移动完成!<br />';
 89             }
 90         }
 91         if(is_dir($newFileName)){
 92             cut_dir($newFileName,$dessub);
 93         }
 94     }
 95     closedir($dh);
 96     if(rmdir($dir)){
 97         echo $dir.'内的文件已经全部移动完成!<hr />';
 98     }
 99 }
100 //文件夹的复制
101 function copy_dir($dir,$des){
102     //$dir待移动目录,$des目标目录
103     if(!file_exists($dir)){
104         exit($dir.' is not exists!Please check your input!');
105     }
106     if(!file_exists($des)){
107         mkdir($des);
108     }
109     $dir = rtrim(str_replace("\\","/",$dir),'/');
110     if(strrpos($dir,'/')){
111         $subdir = substr($dir,strrpos($dir,'/')+1);
112     }else{
113         $subdir = $dir;
114     }
115     $dessub = rtrim($des).'/'.$subdir.'/';
116     $dir = $dir.'/';
117     if(!file_exists($dessub)){
118         mkdir($dessub);
119     }
120     $dh = opendir($dir);
121     readdir($dh);
122     readdir($dh);
123     while($fileName = readdir($dh)){
124         $newFileName = $dir.$fileName;
125         if(is_file($newFileName)){
126             if(copy($newFileName,$dessub.$fileName)){
127                 echo $newFileName.'已经拷贝完成!<br />';
128             }
129         }
130         if(is_dir($newFileName)){
131             copy_dir($newFileName,$dessub);
132         }
133     }
134     closedir($dh);
135 }

 

转载于:https://www.cnblogs.com/coolphper/p/4176034.html

华为网络实战:5分钟搞定OSPF+VRRP+MSTP多协议联动配置(附完整命令集) 本文深入解析了在企业网络中如何高效协同部署OSPF、VRRP和MSTP三大协议。通过一个典型的双核心网络案例,详细阐述了从规划、配置到验证的完整流程,重点强调了确保MSTP根桥与VRRP主设备一致的设计原则,以实现最优的二层与三层流量转发路径,并提供了完整的命令集和故障排查思路。 阅读详情

相关推荐

2024年上半年网络工程师下午真题及答案解析

位于MPLS域边缘、连接其他网络的LSR称为( 3 ),区域内部的LSR称为核心LSR(CoreLSR)IP报文进入MPLS网络时,MPLS入口设备分析IP报文的内容并为其添加合适的标签,所有MPLS网络中的LSR根据标签转发数据,当该IP报文离开MPLS网络时,标签由出口LER弹出。LSP的出口LER称为( 6 )。某高校网络拓扑如下图所示,两校区核心(CORE-1、CORE-2),出口防火墙(NGFW-1、NGFW-2)通过校区间光缆互联,配置OSPF实现全校路由收敛,两校区相距40km。

bsefef的博客 2379

PHP操作文件夹删除大小统计,剪切复制

<?php /* * 删除大小统计,移动,复制 */ //文件间的删除 function delete_dir($dir){ $dir = rtrim($dir).'/';//统一格式,避免格式问题出错 if(!file_exists($dir)){ exit("{$dir} is not exists!Check your input!"); } $dh = opendir($d

479

高德地图 搜索和点击定位

高德地图vue

weixin_45474673的博客 1920

php删除指定文件/获取文件夹的所有文件

一、删除文件。 unlink() 语法: int unlink(string filename); 返回值: 整数 函数种类: 文件存取。如:unlink("tmp/test.txt"); 二、获取文件夹下面的文件名 $dir = "message/";  // 文件夹的名称 if (is_dir($dir)){     if ($dh = opendir($dir))

ximenxiafeng的专栏 1026

php 剪切文件夹功能,php文件创建剪切复制常用的函数

这篇文章主要介绍了关于php 文件 创建 剪切 复制 常用的函数,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

weixin_39678531的博客 378

PHP-文件目录操作

以下是在wamp环境下PHP文件目录操作总结>><?php /*文件操作 fopen(文件地址,模式) 打开文件或url http 模式 r 只读模式,文件指针指向头部,如果文件不存在报错 r+ 读写模式,文件指针指向头部,如果文件不存在报错 w 只写模式,文件指针指向头部,清空文件内容,如果文件不存在,则创建文件 w+ 读写模式,文件

YangJack-前端开发 929

php实现文件操作

遍历目录、计算目录大小删除目录复制目录剪切目录文件上传函数代码

weixin_43376075的博客 224

PHPphp文件夹操作

<?php //打开指定目录 /** * 遍历目录函数,只读取目录中的最外层的内容 * @param string $path * @return array */ function readDirectory($path) { $handle = opendir ( $path ); while ( ($item = readdir ( $handle )) !=...

XYD_Emilio 312

php文件操作

<?phpheader('Content-type:text/html;charset=utf-8');/*** [checkFilename 检验文件名的合法性]* @param [string] $filename [文件名]* @return [bool] [合法返回真]*/function checkFilename($filena...

weixin_33877885的博客 76

php 关于文件夹的一些封装好的函数

/** *检测文件名是否合法 * @param string $filename * @return boolean */ function checkFilename($filename){ $pattern = "/[\/,\*,<>,\?\|]/"; if (preg_match ( $pattern, $filename )...

工作中学习,学习中进步 145

漠岚php文件操作类,php文件操作

header('Content-type:text/html;charset=utf-8');/*** [checkFilename 检验文件名的合法性]* @param [string] $filename [文件名]* @return [bool] [合法返回真]*/function checkFilename($filename){$pattern='/[\/,\*,&...

weixin_35703897的博客 116

文件夹类库

<?php //打开指定目录 /** * 遍历目录函数,只读取目录中的最外层的内容 * @param string $path * @return array */ function readDirectory($path) { $handle = opendir ( $path ); while ( ($item = readdir ( $handle )) !== false ) { //.和..这2个特殊目录 if ($item !...

王兆镇的博客 317

Web项目文件操作PHP

1,文件操作 <?php function readDir($path = 'e:/data/') { $arr = array(); $handle = opendir($path); while (($item = readdir($handle)) !== false) { // . 和 .. 特殊目录 if ($it...

gaokcl的博客 520

php文件操作

<?php header('Content-type:text/html;charset=utf8'); Class FILE { private static $path; private static $files = []; private static $dirs = []; private function __constr...

weixin_30781775的博客 116

为什么建站要用 WordPress?配合谷歌 SEO 优化更具独立站营销优势

WordPress建站凭借开源架构、海量插件生态与完全数据所有权,在谷歌SEO优化上具备源码可控、插件丰富、内容管理强大、数据自主等优势,是独立站长期营销的更优选择。SaaS建站虽便捷,但底层控制、内容与数据权限受限,难以支撑深度SEO战略。若重视自然流量与长期资产积累,应选WordPress。

2601_96764108的博客 203

LB/网关故障应急处置实战:后端全挂、会话失效、证书过期的现场排查复盘

没分层定位就动网关:客户端网络问题,你在那狂改网关配置,改一天也修不好。误把后端故障当网关问题修:后端OOM了,你以为是网关转发有问题,去调网关参数,结果网关连接池被慢请求拖死。直接重启网关导致存量连接全断:网关有点卡顿,你直接,结果引发大面积客诉。正确做法是先摘流。限流误触发当成攻击在解:正常业务高峰触发了限流,你以为是CC攻击,拼命加白名单,结果把真攻击放进了。改完TTL不生效是缓存背锅:改了DNS的TTL,发现没生效,其实是中间递归DNS或者客户端本地缓存没清,别急着骂权威DNS。

Neighbor_OldY的博客 220

科来流量分析/结合MCP自动化

通过两份 Weevely 抓包,可以还原攻击者与 WebShell 之间的通信过程。案例一中,攻击者已经开始使用wShell.php,并执行了echowhoamils和pwd等命令。案例二中,不仅捕获到了的上传过程,还还原出了获取主机名、用户名、当前目录以及尝试查询网络配置等操作。在此基础上,将科来的cmdl.exe封装成 MCP Server,使 Codex 可以直接查询本地抓包;再配合目录监控程序,实现新抓包保存后自动生成 HTML 报告。

2403_88102829的博客 200

vulnhub系列靶机-Photographer

<think>我们只需要根据内容生成摘要,≤150字。内容是关于靶机渗透过程:扫描端口,发现80/139/445/8000。从SMB共享获取邮件和备份,得到用户和密码,登录8000端口Koken CMS后台,利用文件上传漏洞getshell,再通过SUID php7.2提权获取root flag。需简洁概括。</think>本靶机通过SMB共享获取邮件与备份文件,得到账号密码;登录8000端口Koken CMS后台,利用文件上传漏洞获得Shell

Latticy的博客 241

用 Ace Data Cloud 自动发布 WordPress 文章:把 AI 写作变成可积累的 SEO 内容资产

# 用 Ace Data Cloud 自动发布 WordPress 文章:把 AI 写作变成可积累的 SEO 内容资产 做内容营销时,很多团队都会遇到同一个问题:文章写了不少,平台流量也偶尔不错,但内容、账号、分发规则都不完全掌握在自己手里。一旦平台改规则、限流,甚至账号出现异常,之前的积累就可能被打断。 如果你希望把内容长期沉淀为自己的资产,**WordPress 仍然是一个非常值得投入的选

静觅 199

FTP替代怎么做?医院文件安全传输选型与迁移指南

医院开展改造,不应只换服务端软件,而应把传输、安全、审计和运维纳入统一治理。医院信息科常要处理多类文件任务:医保与公卫材料报送、设备日志回传、补丁与配置文件导入、科研数据交换,以及DICOM导出文件传递。3、Ftrans SFT支持传输保护、文件防病毒、目录权限、IP策略及配额,并集中记录操作。1. 监管与业务报送:医保结算、公卫统计和运营报表有固定时限,所以需要自动传输、失败重试和结果告警,避免漏报后才被发现。1. 盘点资产:梳理服务器、账号、目录、协议、脚本、文件规模、任务频率、责任部门和业务时限。

2501_93735104的博客 314

MySQL 运维实战:从 DQL 查询到 MHA 高可用架构全解析

> **摘要**:本文是 MySQL 运维实战的全面总结,涵盖从基础查询到高可用架构的完整知识体系。内容首先深入讲解 DQL 语句,包括单表操作(条件查询、模糊匹配、分组统计、排序、分页等)与多表查询(内连接、外连接、自连接、联合查询等),并结合员工部门表与王者荣耀实战案例进行演示。随后介绍 MySQL 用户管理与权限控制(DCL 语句),以及 Navicat、SQLyog 等图形化管理工具。在架构层面,文章详细讲解了基于 LAMP 架构的开源网站部署、MySQL 5.x 源码安装、冷备/逻辑备份与增量备份

2403_88632628的博客 141

【coze工作流】情感治愈视频.zip

coze工作流源码

正态分布钉板演示实验(高尔顿钉板)

正态分布钉板演示实验(高尔顿钉板)

下一篇: php无限分页类
babu8654
博客等级 码龄9年 0粉丝 0原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值