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.取模 ...
随机推荐
- U盘FAT32文件系统
一.FAT文件系统分为四个部分 参考别人的博客 1.http://blog.163.com/ourhappines@126/blog/static/121363154201311811495492/ ...
- Java获取IP地址:request.getRemoteAddr()注意
在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr() ,这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户 ...
- DbHelperSQL和Dapper数据访问的性能对比
http://www.cnblogs.com/finesite/archive/2012/08/23/2652491.html
- jQuery Deferred(http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html)
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Linux 批量添加用户
#!/bin/bashfor i in $(seq 1 50) #会建立1-50的用户douseradd student$i -g studentecho student$i |passwd ...
- CloudSTack4.2 查看所有虚拟机API测试
http://192.168.153.34:8080/ client/api? command=listVirtualMachines &response=json &sessionk ...
- ps:探索按钮按起落下的技巧
(从死了一次又一次终于挂掉的百度空间中抢救出来的,发表日期 2014-07-10) 先上图: 那个看上去想按下去的,那个看上去像自然地呢? 显而易见: 第一像按下去的,第二个像自然地. 原因: 渐变: ...
- PHP操作MongoDB数据库
http://blog.csdn.net/sunboy_2050/article/details/49449319
- 前端优化分析 之 javascript引用位置优化
在很多优化法则中都提到,尽量将javascript放到页面底部,这是为什么呢 我通过firebug进行了下简单的分析 看下图 本页面首尾都存在javascript代码 我们分析得出 1.整个页面文档 ...
- HttpResponse类
HttpReponse是服务器接收到浏览器的请求后,处理返回结果常用的一个类. 一.属性 Buffer 获取或设置一个值,该值指示是否缓冲输出并在处理完整个响应之后发送它. BufferOutput ...