• 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  ?>
     
  • 相关阅读:
    execing process _ golang
    Spawning process _ golang
    environment variables _ golang
    common-line flags _ golang
    command-line arguments _ golang
    line filters _ golang
    writing files _ golang
    Reading files _ golang
    为什么使用do{}while(0)来进行宏定义
    单向链表的反转
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9304305.html
Copyright © 2020-2023  润新知