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. 【Android】各式各样的弹出框与对菜单键、返回键的监听

    Android自带各式各样的弹出框.弹出框也是安卓主要的组件之中的一个.同一时候安卓程序能够对菜单键.返回键的监听.但在安卓4.0之后就禁止对Home键的屏蔽与监听,强制保留为系统守护按键.假设非要对 ...

  2. Es61

    ECMAScript和JavaScript的关系 ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.Mozilla公司将在这个标准的基础 ...

  3. headset-监听有线耳机插拔

    今天在做项目的时候,需要对耳机的插拔事件进行监听,所以就写了如下的一个小demo,对耳机监听事件进行验证.直接看代码 package com.example.alert; import android ...

  4. 1、Bracket使用

    转自:https://www.jianshu.com/p/393833400782 Adobe的PhotoShop.Dreamweaver等大批优秀软件,印(nue)象(杀)了一代一代的优秀的计算机高 ...

  5. 关于SQL分页存储过程的分析

    建 立一个 Web 应用,分页浏览功能必不可少.这个问题是数据库处理中十分常见的问题.经典的数据分页方法是:ADO 纪录集分页法,也就是利用ADO自带的分页功能(利用游标)来实现分页.但这种分页方法仅 ...

  6. Kinect开发 —— 基础知识

    转自:http://www.cnblogs.com/yangecnu/archive/2012/04/02/KinectSDK_Application_Fundamentals_Part2.html ...

  7. 今日SGU 5.1

    SGU 100 题意: 普通的a+b #include<bits/stdc++.h> #define de(x) cout<<#x<<"="&l ...

  8. [RxJS] Marbles Testings

    Install: npm install — save-dev jasmine-marbles Basic example: import {cold, getTestScheduler} from ...

  9. 辛星跟您玩转vim第三节之程序猿特须要的移动方式

    前面第二节我首先值得一提的是,我的vim教程pdf版本号已经写完了.大家能够去下载,这里是csdn的下载地址:csdn下载.假设左边的下载地址挂掉了.也能够自行在浏览器以下输入例如以下地址进行下载:h ...

  10. android图片特效处理之怀旧效果

    图片特效处理系列将介绍图片的像素点的特效处理,这些物资注重的是原理.也就是说只要你知道这些算法不管是C++,VB,C#,Java都可以做出相同的特效.下面将介绍图片怀旧效果的算法.算法如下: 上面公式 ...