微信扫一扫打赏支持

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

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  ?>

 

 

 

 

 
posted @ 2018-07-13 12:30  范仁义  阅读(435)  评论(0)    收藏  举报