PHP实现遍历、复制、删除目录
一、遍历 opendir
具体函数我就不解释了,直接看代码理解:
<?php
header("Content-Type:Text/html;charset=utf8");
$dir = 'd:/test/'; //将路径赋值给变量
if(is_dir($dir)){ //判断该变量是不是一个目录
if($dh = opendir($dir)){ //打开目录
//读取文件,当文件不是空的时候,循环读出文件
while(($file = readdir($dh))!==false){
if($file == ''||$file == '..'||$file == '.'){
continue; //如果文件中有‘’和“..”就跳出
}
echo "file:{$file}"."<br>"; //输出文件名
echo "filetype:".filetype($dir.$file)."<br>";
}
}
closedir($dh); //关闭目录
}
?>
在我的D:/test/目录下的结果:
aaarticlea/png;base64,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" alt="" />
现在我们来写一个函数,遍历指定目录下所有文件,如果遇到目录,继续遍历目录下的文件。
<?php
header("Content-Type:Text/html;charset=utf8");
$dir = 'd:/test/'; //将路径赋值给变量
function scanAll($dir){
if(is_dir($dir)){ //判断该变量是不是一个目录
echo "DIR:".$dir."<br>";
$child = scandir($dir) ; //列出指定路径中的文件和目录并赋值给$child
foreach($child as $c){
if($c !== '.' && $c !== '..'){ //不等于当前目录且不等于父目录
scanAll($dir.'/'.$c); //遍历递归
}
}
}
if(is_file($dir)){
echo 'File:'.$dir."<br>";
}
}
scanAll($dir);
?>
2、复制目录 copy($source,$dest)
<?php
//目录复制
header("Content-Type:Text/html;charset=utf8");
function copydir($sourceDir,$destDir){ if(!is_dir($sourceDir)){
return false;
}
if(!is_dir($destDir)){
if(!mkdir($destDir)){
return false;
}
}
$dir = opendir($sourceDir);
if(!$dir){
return false;
}
while(false !== ($file=readdir($dir))){
if($file != '.' && $file != '..'){
if(is_dir($sourceDir.'/'.$file)){
if(!copydir($sourceDir.'/'.$file,$destDir.'/'.$file)) {
return false;
}
}else{
if(!copy($sourceDir.'/'.$file,$destDir.'/'.$file)){ } }
}
}
closedir($dir);
return true;
}
3、删除目录 --unlink($path)
<?php
//删除目录
header("Content-Type:Text/html;charset=utf8");
function deldir($dir){
$dh = opendir($dir);
while($file = readdir($dh)){
if($file !='.' && $file != '..'){
$fullpath = $dir.'/'.$file;
if(!is_dir($fullpath)){
unlink($fullpath);
}else{
deldir($fullpath);
}
}
}
closedir($dh); if(rmdir($dir)){
return true;
}
return false;
}
PHP实现遍历、复制、删除目录的更多相关文章
- Java数组复制、遍历、反转
/* 1.数组长度,直接length 即可! 2.min()/max(),需要调用库! 3.数组的复制 ,遍历复制,或者直接命名相等 即可! 4.数组反转时,直接折中即可!对调两重循环麻烦! */ i ...
- JS - 二叉树算法实现与遍历 (更新中...)
一.关于二叉树: 截图来自:https://segmentfault.com/a/1190000000740261 温馨提示:学习以及使用二叉树概念,心中永远有这么一个图,对于理解和接受二叉树有很大的 ...
- liist不同遍历优缺点
JAVA中循环删除list中元素的方法总结 印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个 ...
- js中的深复制与浅复制
前言 所谓深复制与浅复制(深拷贝与浅拷贝),乍一听感觉听高大上,像是一个非常难理解的概念,其实我们平常项目开发都是在用的,只是你可能不知道该怎么叫它的名字而已,就像你听熟了一首歌,就是不知道这首歌叫什 ...
- JavaScript Object的复制
var obj = { a: 1, b: 2, c: { d: 3, e: 4, f: function () { console.log("对象复制"); } } } 1. fo ...
- python第六天 函数 python标准库实例大全
今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...
- linux的简单了解和使用
一. Linux概述 1.1. 简介 Linux是一个自由的,免费的,源码开放的操作系统.也是开源软件中最著名的例子.其最主要的目的就是为了建立不受任何商品化软件版权制约的,全世界都能使用的类Un ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇
<高性能javascript> 领悟随笔之-------DOM编程篇一 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
- WebClient 实现多文件/文本同时上传
public class CreateBytes { Encoding encoding = Encoding.UTF8; /**/ /// <summary> /// 拼接所有的二进制数 ...
- Python常用内置函数总结
一.数学相关 1.绝对值:abs(-1)2.最大最小值:max([1,2,3]).min([1,2,3])3.序列长度:len('abc').len([1,2,3]).len((1,2,3))4.取模 ...
随机推荐
- python抓取网页例子
python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...
- C#判断当前操作系统
private OperatingSystem os = System.Environment.OSVersion; os.Version.Major.ToString(); ) { //Win7系统 ...
- VISIO 2007 修改形状默认字体 自定义模具
visio 2007的形状的默认字体为8号,比较小,怎样改成默认10号? 首先将一个流程图中所要用的形状都拖到绘图区,然后全选,设置字体为10号,全选,再拖动到形状区,如下图: 点击‘是’,确认修改模 ...
- linux 5 配置xmanager
0 关闭防火墙或者打开177端口 iptables -A INPUT -p udp --dport 177 -j ACCEPT 1.vi /etc/inittab id:5:initdefault: ...
- 启动tomcat时 一闪而过解决方法
1 首先确定JAVA 已经配好了环境变量,具体配置方法,找一下度娘. 测试方法:进入cmd -> javac -version 能看到JAVA的版本信息,证明配置成功了. 2 分析一下问题出现的 ...
- 编译cscope-15.8a遇到的问题与解决方案
1)环境 主机:Linux ubuntu 3.2.0-32-generic-pae #51-Ubuntu SMP Wed Sep 26 21:54:23 UTC 2012 i686 i686 i386 ...
- pic/at89c2051 programmer
http://dangerousprototypes.com/forum/viewtopic.php?t=170 It looks like the PICKIT2 uses a small boos ...
- 直接运行PowerShell脚本
以管理员权限运行下面语句:ftype Microsoft.PowerShellScript.1="C:\WINDOWS\system32\windowspowershell\v1.0\pow ...
- arp:地址解析协议(Address Resolution Protocol)(来自维基百科)
地址解析协议(Address Resolution Protocol),其基本功能为通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在I ...
- android中判断sim卡状态和读取联系人资料的方法
在写程序中,有时候可能需要获取sim卡中的一些联系人资料.在获取sim卡联系人前,我们一般会先判断sim卡状态,找到sim卡后再获取它的资料,如下代码我们可以读取sim卡中的联系人的一些信息. Pho ...