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.取模 ...
随机推荐
- C++11用于计算函数对象返回类型的统一方法
[C++11用于计算函数对象返回类型的统一方法] 模板 std::result_of 被TR1 引进且被 C++11 所采纳,可允许我们决定和使用一个仿函数其回返值的类别.底下,CalculusVer ...
- 应用c#读取带cookie的http数据
@(编程) private static string Login() { string url = string.Format("{0}/login-submit.html?identit ...
- UVaLive 7503 Change (坑题。。。。。。)
题意:给定两个人民币,问你花最少钱保证能够凑出另一个价格. 析:这个题最大的坑就是在,并一定是一次就凑出来,可以多次,然后就可以想了,如果要凑的数和1有关,特判,如果是2倍数,0.01就够了,否则就是 ...
- Linux 调节屏幕亮度
intel的核心显卡驱动是在 /sys/class/backlight/intel_backlight/ 目录下面的brightness文件中配置的. 可以通过查看max_brightness的值来确 ...
- html的下拉框的几个基本使用方法
尽管使用EXT开发了一段时间,可是自己认为我对javascript还是不是非常熟,所以边看书边做小样例 给自己以后用到的时候查看下,都是非常主要的东西,对刚開始学习的人可能有点帮助 以下是代码 < ...
- C++异常
相对于C语言,C++增加了异常机制.考虑,异常解决了什么问题,又带来了什么问题. 异常解决了什么问题: 1.问题检测与问题处理相分离. 2.C语言只是返回一个整数,而异常带有上下文信息,方便找出问题. ...
- BZOJ 4318: OSU! 期望DP
4318: OSU! 题目连接: http://www.lydsy.com/JudgeOnline/problem.php?id=4318 Description osu 是一款群众喜闻乐见的休闲软件 ...
- Visual Studio原生开发的10个调试技巧(一)
最近碰巧读了Ivan Shcherbakov写的一篇文章,<11个强大的Visual Studio调试小技巧>.这篇文章只介绍了一些有关Visual Studio的基本调试技巧,但是还有其 ...
- CCScrollView/CCTableView(CCTableViewDelegate CCTableViewDataSource CCTableView-滑动列表-游戏中大量使用 非常重要的一个类)
tableview scrollViewDidScroll函数中有一段 ---- 即---滑动tableview时触发的函数 : 会将全部显示的cell又一次刷新(刷新函数中调用了自己定义的ta ...
- Java IO之File
FILE类是用来实现获取文件.文件夹的类库工具,File并不是像类名所表示的那样仅仅是用来表示文件.它还能够用来表示文件夹. 所以能够用File来获取一个文件夹下的全部文件,甚至是文件夹中的文件. 一 ...