php课程 10-34 目录遍历中的注意事项是什么

一、总结

一句话总结:用scandir,会把目录和文件放到一个数组中。

1、移动文件怎么实现,php里面没有移动文件这个函数?

先复制,再删除

 2 //删除目录
3 function delDir($dir){
4 $files=scandir($dir);
5 foreach($files as $key=>$val){
6 if($key>1){
7 $file=$dir.'/'.$val;
8
9 if(is_dir($file)){
10 delDir($file);
11 }else{
12 unlink($file);
13 }
14 }
15 }
16 rmdir($dir);
17 }
18
19 // 复制目录
20 function copyDir($dir1,$dir2){
21 mkdir($dir2);
22 $files=scandir($dir1);
23 foreach($files as $key=>$val){
24 if($key>1){
25 $file1=$dir1.'/'.$val;
26 $file2=$dir2.'/'.$val;
27
28 if(is_dir($file1)){
29 copyDir($file1,$file2);
30 }else{
31 copy($file1,$file2);
32 }
33 }
34 }
35 }
36
37 //移动目录
38 function moveDir($dir1,$dir2){
39 copyDir($dir1,$dir2);
40 delDir($dir1);
41 }
42
43 $dir1='img';
44 moveDir($dir1,'img3');

2、如何删除一个非空目录,php默认函数没有?

rmdir不能删除非空目录
直接百度,找第三方的代码集合

3、目录遍历的时候,为什么没有显示点(.)(本级目录)和点点(..)(上一级目录)?

遍历目录的时候,点(.)和点点(..)是一直都存在的,只不过被影藏了
在dos下敲dir,也会出现点(.)(本级目录)和点点(..)(上一级目录)这两个
无论在windows和linux里面,点和点点都被影藏了

 7 while($file=readdir($od)){
8 if($file!='.' && $file!='..'){
9 echo $file.'<br>';
10 }
11 }

4、如何在一个文件中两次使用opendir,有什么注意事项?

前一次opendir之后必须closedir关闭,后一次的opendir然后才能打开,不然会报错

5、目录遍历,什么函数最好用?

scandir,用scandir,会把目录和文件放到一个数组中。

 3 $dir='imgs';
4
5 $arr=scandir($dir);
6
7 foreach($arr as $key=>$val){
8 if($key>1){
9 echo $key.'-'.$val.'<br>';
10 }
11 }

二、目录遍历中的注意事项是什么

1、相关知识

目录操作:
1.遍历目录
opendir();
readdir();
closedir();
scandir();

2.创建空目录
mkdir();

3.删除空目录
rmdir();

4.删除完整目录(delDir)
scandir();

function delDir($dir){
    $files=scandir($dir);
    foreach($files as $key=>$val){
        if($key>1){
            $file=$dir.'/'.$val;

if(is_dir($file)){
                delDir($file);
            }else{
                unlink($file);
            }
        }
    }
    rmdir($dir);
}

5.复制完整目录(cpDir)
function copyDir($dir1,$dir2){
    mkdir($dir2);
    $files=scandir($dir1);
    foreach($files as $key=>$val){
        if($key>1){
            $file1=$dir1.'/'.$val;
            $file2=$dir2.'/'.$val;

if(is_dir($file1)){
                copyDir($file1,$file2);
            }else{
                copy($file1,$file2);
            }
        }
    }
}

6.移动完整目录(mvDir)
copyDir();
delDir();

 

2、代码

moveDir移动目录

 <?php
//删除目录
function delDir($dir){
$files=scandir($dir);
foreach($files as $key=>$val){
if($key>1){
$file=$dir.'/'.$val; if(is_dir($file)){
delDir($file);
}else{
unlink($file);
}
}
}
rmdir($dir);
} // 复制目录
function copyDir($dir1,$dir2){
mkdir($dir2);
$files=scandir($dir1);
foreach($files as $key=>$val){
if($key>1){
$file1=$dir1.'/'.$val;
$file2=$dir2.'/'.$val; if(is_dir($file1)){
copyDir($file1,$file2);
}else{
copy($file1,$file2);
}
}
}
} //移动目录
function moveDir($dir1,$dir2){
copyDir($dir1,$dir2);
delDir($dir1);
} $dir1='img';
moveDir($dir1,'img3');
?>

opendir和readdir目录遍历

 <?php 

 $dir='imgs';

 $od=opendir($dir);

 while($file=readdir($od)){
if($file!='.' && $file!='..'){
echo $file.'<br>';
}
}
?>

scandir目录遍历

 <?php 

 $dir='imgs';

 $arr=scandir($dir);

 foreach($arr as $key=>$val){
if($key>1){
echo $key.'-'.$val.'<br>';
}
}
?>
 

php课程 10-34 目录遍历中的注意事项是什么的更多相关文章

  1. DVWA-文件包含-目录遍历学习笔记

    参考文献资料: https://www.cnblogs.com/s0ky1xd/p/5823685.html https://www.cnblogs.com/yuzly/p/10799486.html ...

  2. HttpClient使用之下载远程服务器中的文件(注意目录遍历漏洞)

    参考文献: http://bbs.csdn.net/topics/390952011 http://blog.csdn.net/ljj_9/article/details/53306468 1.下载地 ...

  3. 炼数成金数据分析课程---10、python中如何画图

    炼数成金数据分析课程---10.python中如何画图 一.总结 一句话总结: 主要matplotlib库,pandas中也可以画一些基础图 大纲+实例快速学习法 1.matplotlib的最简单画图 ...

  4. 【代码审计】711cms_V1.0.5 目录遍历漏洞分析

      0x00 环境准备 711CMS官网: https://www.711cms.com/ 网站源码版本:711CMS 1.0.5 正式版(发布时间:2018-01-20) 程序源码下载:https: ...

  5. 【代码审计】CLTPHP_v5.5.3后台目录遍历漏洞分析

      0x00 环境准备 CLTPHP官网:http://www.cltphp.com 网站源码版本:CLTPHP内容管理系统5.5.3版本 程序源码下载:https://gitee.com/chich ...

  6. 【二叉树遍历模版】前序遍历&&中序遍历&&后序遍历&&层次遍历&&Root->Right->Left遍历

    [二叉树遍历模版]前序遍历     1.递归实现 test.cpp: 12345678910111213141516171819202122232425262728293031323334353637 ...

  7. 【代码审计】大米CMS_V5.5.3 目录遍历漏洞分析

      0x00 环境准备 大米CMS官网:http://www.damicms.com 网站源码版本:大米CMS_V5.5.3试用版(更新时间:2017-04-15) 程序源码下载:http://www ...

  8. Linux课程---10、权限管理(权限有哪几种)

    Linux课程---10.权限管理(权限有哪几种) 一.总结 一句话总结: r 读 w 写 x 执行 1.drwxr-x---  2 root root  4096 Jan 20 19:39 mnt ...

  9. laravel基础课程---10、数据库基本操作(如何使用数据库)

    laravel基础课程---10.数据库基本操作(如何使用数据库) 一.总结 一句话总结: 1.链接数据库:.env环境配置里面 2.执行数据库操作:DB::table('users')->up ...

随机推荐

  1. 解决QML开发中ComboBox中一个已选择项没有清除的问题

    解决QML开发中ComboBox中一个已选择项没有清除的问题 近期使用QML开发一个项目.须要使用ComboBox进行显示.当进行一个操作时,须要向ComboBox加入一个元素,当进行另外一个操作时. ...

  2. 56.如何清除已经设置的npm config配置

    npm config delete registry npm config delete disturl 或者 npm config edit 找到淘宝那两行,删除

  3. css3新特性选择器(补充)

    1.选择p标签中的第一个字符 p:first-letter{ color:red; font-size:25px; } 2.选择p标签中的第一行 p:first-line{ color:red; fo ...

  4. go channel实现

    go channel实现 Go语言经过多年的发展,于最近推出了第一个稳定版本.相对于C/C++来说,Go有很多独特之出,比如提供了相当抽象的工具,如channel和goroutine.本文主要介绍ch ...

  5. python2 python3 m2crypto 安装(rsa 私钥文件加密)

    转自作者:大道至简_Andy 原文链接:https://www.jianshu.com/p/b308357ef649 第一种方式:使用apt-get(以Python2版本进行测试的) sudo apt ...

  6. 洛谷 P1757 通天之分组背包

    P1757 通天之分组背包 题目背景 直达通天路·小A历险记第二篇 题目描述 自01背包问世之后,小A对此深感兴趣.一天,小A去远游,却发现他的背包不同于01背包,他的物品大致可分为k组,每组中的物品 ...

  7. HDU 1533 Going Home(KM完美匹配)

    HDU 1533 Going Home 题目链接 题意:就是一个H要相应一个m,使得总曼哈顿距离最小 思路:KM完美匹配,因为是要最小.所以边权建负数来处理就可以 代码: #include <c ...

  8. Java遍历目录下全部文件并替换指定字符串

    应用场景:比方有一个深层次的文件目录结构,如:javaAPI 每一个文件中面都有同样的内容,而我们要统一改动为其它内容.上千个文件假设一个个改动显得太不明智. import java.io.Buffe ...

  9. Centos 6.8 安装 Protocol Buffers , v3.2.0有 BUG ,安装 3.1.0

    Centos 6.8 安装 Protocol Buffers   , v3.2.0有 BUG ,安装 3.1.0 切换到用户目录 cd ~ 安装 python2.7,须加入zlib wget http ...

  10. javascript创建对象的方法--组合模式

    javascript创建对象的方法--组合模式 一.总结 0.作用:解决原型模式对象独有属性创建麻烦的问题 1.组合模式使用普遍:jquery就是用的组合模式,组合模式使用非常普遍 2.组合模式优点: ...