一、遍历 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实现遍历、复制、删除目录的更多相关文章

  1. Java数组复制、遍历、反转

    /* 1.数组长度,直接length 即可! 2.min()/max(),需要调用库! 3.数组的复制 ,遍历复制,或者直接命名相等 即可! 4.数组反转时,直接折中即可!对调两重循环麻烦! */ i ...

  2. JS - 二叉树算法实现与遍历 (更新中...)

    一.关于二叉树: 截图来自:https://segmentfault.com/a/1190000000740261 温馨提示:学习以及使用二叉树概念,心中永远有这么一个图,对于理解和接受二叉树有很大的 ...

  3. liist不同遍历优缺点

    JAVA中循环删除list中元素的方法总结 印象中循环删除list中的元素使用for循环的方式是有问题的,但是可以使用增强的for循环,然后今天在使用时发现报错了,然后去科普了一下,再然后发现这是一个 ...

  4. js中的深复制与浅复制

    前言 所谓深复制与浅复制(深拷贝与浅拷贝),乍一听感觉听高大上,像是一个非常难理解的概念,其实我们平常项目开发都是在用的,只是你可能不知道该怎么叫它的名字而已,就像你听熟了一首歌,就是不知道这首歌叫什 ...

  5. JavaScript Object的复制

    var obj = { a: 1, b: 2, c: { d: 3, e: 4, f: function () { console.log("对象复制"); } } } 1. fo ...

  6. python第六天 函数 python标准库实例大全

    今天学习第一模块的最后一课课程--函数: python的第一个函数: 1 def func1(): 2 print('第一个函数') 3 return 0 4 func1() 1 同时返回多种类型时, ...

  7. linux的简单了解和使用

    一. Linux概述  1.1. 简介  Linux是一个自由的,免费的,源码开放的操作系统.也是开源软件中最著名的例子.其最主要的目的就是为了建立不受任何商品化软件版权制约的,全世界都能使用的类Un ...

  8. 《高性能javascript》 领悟随笔之-------DOM编程篇

    <高性能javascript> 领悟随笔之-------DOM编程篇一 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...

  9. WebClient 实现多文件/文本同时上传

    public class CreateBytes { Encoding encoding = Encoding.UTF8; /**/ /// <summary> /// 拼接所有的二进制数 ...

  10. 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.取模 ...

随机推荐

  1. 用keyword实现Editor.GetSelection的退出功能

    有时候我们在使用 GetSelection 功能让用户选择实体时,可能会给用户提供一些 keyword 选项,要接收用户选择的 keyword 选项,需要用到 PromptSelectionOptio ...

  2. 3.emWin5.26(ucGui)VS2008 2-D图形库-基本绘图【Worldsing笔记】

    UCGUI(emWin) 2-D图形库--之基本板绘图,在ucgui的基本绘图功能上来看,功能还是比较全的,本例程主要使用基本的接口,两个主要的概念是绘制(draw)和填充(Fill),这两的区别是一 ...

  3. HDU 4870 Rating(高斯消元 )

    HDU 4870   Rating 这是前几天多校的题目,高了好久突然听旁边的大神推出来说是可以用高斯消元,一直喊着赶快敲模板,对于从来没有接触过高斯消元的我来说根本就是一头雾水,无赖之下这几天做DP ...

  4. UVaLive 6805 Pantun Grader (恶心的模拟)

    题意:给定 n 首诗,然后让你给他打分,有四种规则,第一种是按音节打,如果音节在8-12之间,就加10,第二种就是按押韵打,如果13,24一个押韵就加20分. 第三种按音节数打,13,24有一个一样的 ...

  5. VM VirtualBox 上安装 CentOs6.4(详细)

    在网上下载:CentOS-6.4-i386-bin-DVD1.iso镜像. 这是我在VBox上安装CentOs6.4的过程: 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12 ...

  6. Spring Bean生命周期

    1.Bean的建立:BeanFactory容器寻找Bean的定义信息,读取Bean定义文件,并将其实例化,生成各个Bean实例.2.属性注入:使用依赖注入,Spring按照Bean定义信息配置Bean ...

  7. C++ assert()断言

    assert是一个宏定义,原型定义在<assert.h>中: #include <assert.h> void assert( int expression ); 其作用是:如 ...

  8. Windows Self Signed Driver

    In particular, Microsoft® instituted a device driver certification process for its Windows® desktop ...

  9. bootstrap适配移动端

    上次在pythonanywhere上挂上去的页面,是这个样子的 而在手机上看是这个样子的 总之简直不能看= = 看了一下学校几个微信公众号的页面.都是用的bootstrap,好吧我也去试试看好了. 在 ...

  10. Maven实战之Quick Start

    Introduction Maven是一个异常强大的构建工具,能够帮我们自动化构建过程,从清理.编译.测试到生成报告,再到打包和部署.通过Maven,我们只需要输入简单的命令(如mvn clean i ...