文档章节

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

o
 osc_odyg6b92
发布于 2018/07/13 12:30
字数 813
阅读 40
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

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移动目录

 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');
45  ?>

 

opendir和readdir目录遍历

 1 <?php 
 2 
 3 $dir='imgs';
 4 
 5 $od=opendir($dir);
 6 
 7 while($file=readdir($od)){
 8     if($file!='.' && $file!='..'){
 9         echo $file.'<br>';
10     }
11 }
12  ?>

 

scandir目录遍历

 1 <?php 
 2 
 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 }
12  ?>

 

 

 

 

 
o
粉丝 1
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
记一次失败的Perl + Nginx + FastCGI 配置过程

这两天心血来潮,不知道为什么和 Perl + Nginx + FastCGI 配置 耗上了。但是失败了,记录如下: 1)安装Nginx 1.4.3 ,我的是WINDOWS 7 系统,修改配置文件如下: location ~ .(pl|cgi|perl)?...

通吃岛-低手哥
2013/10/27
1.7K
7
Flappy Bird(安卓版)逆向分析(一)

更改每过一关的增长分数 反编译的步骤就不介绍了,我们直接来看反编译得到的文件夹 方法1:在smali目录下,我们看到org/andengine/,可以知晓游戏是由andengine引擎开发的。打开/res/raw/at...

enimey
2014/03/04
6.1K
18
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
22
树莓派(Raspberry Pi):完美的家用服务器

自从树莓派发布后,所有在互联网上的网站为此激动人心的设备提供了很多有趣和具有挑战性的使用方法。虽然这些想法都很棒,但树莓派( RPi )最明显却又是最不吸引人的用处是:创建你的完美家用...

异次元
2013/11/09
7.1K
8
程序猿媛一:Android滑动翻页+区域点击事件

滑动翻页+区域点击事件 ViewPager+GrideView 声明:博文为原创,文章内容为,效果展示,思路阐述,及代码片段。文尾附注源码获取途径。 转载请保留原文出处“http://my.oschina.net/gluoyer...

花佟林雨月
2013/11/09
4.2K
1

没有更多内容

加载失败,请刷新页面

加载更多

OSPF综合实验

OSPF开放路径最短选择优先协议(IGP协议、链路状态协议) 支持大型网络,通过彼此交互hello建立邻居关系,在通过彼此交互的LSA通过SPF算法算出最优路由的到自己去往其他节点路径。 OSPF的DR、...

osc_qmxpov5s
5分钟前
0
0
vmlogin多平台·多账号·安全提速系统·稳定浏览器指纹环境

VMLogin-稳定浏览器指纹环境,Cookie隔离,稳定,更高效,更智能的多账号管,从超级浏览器开始,让你的跨境之旅更便捷! VMLogin生成多个唯一指纹浏览器,每个指纹浏览器都是相互隔离的。 可以...

VMlogin中文版防关联浏览器
5分钟前
0
0
Buurst SoftNAS操作手册—Part1 如何在AWS上部署SoftNAS

前言 Buurst SoftNAS为企业提供高性能、易管理、高可用、极具经济效益的存储服务,无论是在私有云还是公有云环境下均可实现一键部署。Buurst SoftNAS可为企业提供软件定义NAS文件管理器并提供...

osc_cyo5y1ey
6分钟前
0
0
《闲扯Redis十》Redis 跳跃表的结构实现

一、前言 Redis 提供了5种数据类型:String(字符串)、Hash(哈希)、List(列表)、Set(集合)、Zset(有序集合),理解每种数据类型的特点对于redis的开发和运维非常重要。 原文解析:h...

大道七哥
7分钟前
0
0
BGP综合实验

BGP边界网关协议 BGP是目前使用的唯一的自治系统间的路由协议,它是一种矢量路由协议,基于TCP的179号端口,它采用单播增量更新的方式更新路由,与其他的路由协议不同的是,BGP只要TCP可达,...

osc_tybx1rlt
7分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部