Résumé des opérations d'annuaire PHP

藏色散人
Libérer: 2023-04-08 11:14:01
avant
2640 Les gens l'ont consulté

Résumé des opérations d'annuaire PHP

Opération de répertoire PHP (avec fichier de fonction d'opération de répertoire emballé en pièce jointe)

API commune de la bibliothèque de fonctions de répertoire

    $path='test';
    var_dump(is_dir($path));//检测是否为目录
    echo &#39;<hr/>&#39;;
    echo getcwd();//得到当前的工作目录
    echo &#39;<hr/>&#39;;
    //得到磁盘总大小
    echo disk_total_space(&#39;/&#39;);
    echo &#39;<hr/>&#39;;
    //得到磁盘可用空间
    echo disk_free_space(&#39;/&#39;);
Copier après la connexion

Créer et supprimer des répertoires

Répertoires multi-niveaux

    //创建目录
    //mkdir($path,$mode,$flag):创建目录
    var_dump(mkdir(&#39;a&#39;));
    //检测目录是否存在,不存在则创建
     $path=&#39;king&#39;;
     if(!file_exists($path)){
       if(mkdir($path)){
         echo &#39;目录创建成功&#39;;
       }else{
         echo &#39;目录创建失败&#39;;
       }
     }else{
       echo &#39;目录已存在&#39;;
     }
    //创建多级目录 b/c
     $path=&#39;b&#39;.DIRECTORY_SEPARATOR.&#39;c&#39;;
     echo $path;
     var_dump(mkdir($path,755,true));
     //删除目录
     var_dump(rmdir(&#39;a&#39;));
     var_dump(rmdir(&#39;b&#39;));
     var_dump(rmdir(&#39;a&#39;));
Copier après la connexion

Lire les répertoires

$path=&#39;webuploader-master&#39;;
    //打开指定目录
    $handle=opendir($path);
    var_dump($handle);//resource(5) of type (stream)
    //遍历文件,获取类型
     while(($item=readdir($handle))!==false){
       echo $item,"\n";
       echo filetype($path.DIRECTORY_SEPARATOR.$item),"\n";//获取文件类型
       echo "\n";
     }
    //遍历文件,获取类型2
    while(($item=readdir($handle))!==false){
      //去掉.和..
      if($item!=&#39;.&#39;&&$item!=&#39;..&#39;){
        //检测是否是文件
        if(is_file($path.&#39;/&#39;.$item)){
          echo &#39;文件:&#39;,$item,"\n";
        }else{
          echo &#39;目录:&#39;,$item,"\n";
        }
      }
    }
    //rewinddir()重置遍历指针
    rewinddir();
    var_dump(readdir($handle));// .
     //关闭句柄
     closedir($handle);
Copier après la connexion

DirectoryIteratorUtilisation d'itérateurs

  $dir=new DirectoryIterator(__DIR__);
    //print_r($dir);
    foreach($dir as $fileInfo){
      if($fileInfo->getFilename()!=&#39;.&#39;&&$fileInfo->getFilename()!=&#39;..&#39;){
        echo $fileInfo->getFilename(),"\n";//文件名
        echo $fileInfo->getType(),"\n";//文件类型
      }
    }
Copier après la connexion

[Encapsulation de fonctions liées aux répertoires super pratique]

dir.func.php

    /**
     * 检测目录是否为空
     * @method check_empty_dir
     * @param  string          $path 目录名
     * @return boolean         true|false
     */
    function check_empty_dir(string $path){
      //检测目录是否存在,存在则打开
      if(!is_dir($path)){
        return false;
      }
      //打开指定目录
      $handle=opendir($path);
      //读取
      while(($item=@readdir($handle))!==false){
        //去掉.和..操作
        if($item!=&#39;.&#39;&&$item!=&#39;..&#39;){
          return false;
        }
      }
      //关闭句柄
      closedir($handle);
      return true;
    }
    -------------------
    /**
     * 读取目录下的所有文件
     * @method read_directory
     * @param  string         $path 目录名称
     * @return void            直接输出目录下的所有文件及子目录
     */
    function read_directory(string $path){
      if(!is_dir($path)){
        return false;
      }
      $handle=opendir($path);
      while(($item=@readdir($handle))!==false){
        if($item!=&#39;.&#39;&&$item!=&#39;..&#39;){
          $pathName=$path.DIRECTORY_SEPARATOR.$item;
          if(is_file($pathName)){
            echo &#39;文件:&#39;,$item,&#39;<br/>&#39;;
          }else{
            echo &#39;目录:&#39;,$item,&#39;<br/>&#39;;
            $func=__FUNCTION__;
            $func($pathName);
          }
        }
      }
      closedir($handle);
    }
    // read_directory(&#39;a&#39;);
    -------------------
    /**
     * 遍历目录下所有内容返回
     * @method read_directory1
     * @param  string          $path 目录名称
     * @return mixed            false|array
     */
    function read_directory1(string $path){
      if(!is_dir($path)){
        return false;
      }
      $handle=opendir($path);
      while(($item=@readdir($handle))!==false){
        if($item!=&#39;.&#39;&&$item!=&#39;..&#39;){
          $pathName=$path.DIRECTORY_SEPARATOR.$item;
          if(is_file($pathName)){
            $arr[&#39;file&#39;][]=$pathName;
          }elseif(is_dir($pathName)){
            $arr[&#39;dir&#39;][]=$pathName;
            $func=__FUNCTION__;
            $func($pathName);
          }
        }
      }
      closedir($handle);
      return $arr;
    }
    // $res=read_directory1(&#39;a&#39;);
    // print_r($res);
    -------------------
    /**
     * 读取目录中的所有文件
     * @method get_all_files
     * @param  string        $path 目录名称
     * @return mixed              false|array
     */
    function get_all_files(string $path){
      if(!is_dir($path)){
        return false;
      }
      if($handle=opendir($path)){
        $res=[];
        while(($item=readdir($handle))!==false){
          if($item!=&#39;.&#39;&&$item!=&#39;..&#39;){
            $pathName=$path.DIRECTORY_SEPARATOR.$item;
            is_dir($pathName)?$res[$pathName]=get_all_files($pathName):$res[]=$pathName;
          }
        }
        closedir($handle);
        return $res;
      }else{
        return false;
      }
    }
    // print_r(get_all_files(&#39;a&#39;));
    -------------------
    /**
     * 得到目录大小
     * @method get_dir_size
     * @param  string       $path 目录名称
     * @return mixed             false|int
     */
    function get_dir_size(string $path){
      if(!is_dir($path)){
        return false;
      }
      static $sum=0;
      $handle=opendir($path);
      while(($item=readdir($handle))!==false){
        if($item!=&#39;.&#39;&&$item!=&#39;..&#39;){
          $pathName=$path.DIRECTORY_SEPARATOR.$item;
          if(is_file($pathName)){
            $sum+=filesize($pathName);
          }else{
            $func=__FUNCTION__;
            $func($pathName);
          }
        }
      }
      closedir($handle);
      return $sum;
    }
    // echo get_dir_size(&#39;a&#39;);
    -------------------
    /**
     * 重命名目录
     * @method rename_dir
     * @param  string     $oldName 原目录
     * @param  string     $newName 新目录
     * @return boolean              true|false
     */
    function rename_dir(string $oldName,string $newName){
      //检测原文件是否存在,或者当前目录下存在同名目录
      $dest=dirname($oldName).DIRECTORY_SEPARATOR.$newName;
      if(!is_dir($oldName)|| file_exists($dest)){
        return false;
      }
      if(rename($oldName,$dest)){
        return true;
      }
      return false;
    }
    //重命名
    // var_dump(rename_dir(&#39;a&#39;,&#39;aaaa&#39;));
    // var_dump(rename_dir(&#39;b&#39;,&#39;c&#39;));
    -------------------
    /**
     * 剪切目录
     * @method cut_dir
     * @param  string  $src 原目录
     * @param  string  $dst 新目录位置
     * @return boolean       true|false
     */
    function cut_dir(string $src,string $dst){
      //检测原目录是否存在,不存在返回false
      if(!is_dir($src)){
        return false;
      }
      //检测目录路径是否存在,不存在则创建
      if(!is_dir($dst)){
        mkdir($dst,755,true);
      }
      //检测目录路径下是否存在同名目录
      $dest=$dst.DIRECTORY_SEPARATOR.basename($src);
      if(is_dir($dest)){
        return false;
      }
      //剪切
      if(rename($src,$dest)){
        return true;
      }
      return false;
    }
    // var_dump(cut_dir(&#39;d&#39;,&#39;uploads&#39;));
    // var_dump(cut_dir(&#39;c&#39;,&#39;test1&#39;));
    // var_dump(cut_dir(&#39;test1&#39;,&#39;test2&#39;));
    -------------------
    /**
     * 拷贝目录操作
     * @method copy_dir
     * @param  string   $src 原目录
     * @param  string   $dst 目标路径
     * @return boolean        true|false
     */
    function copy_dir(string $src,string $dst){
      //检测原目录是否存在
      if(!is_dir($src)){
        return false;
      }
      //检测目标目录是否存在,不存在则创建
      if(!is_dir($dst)){
        mkdir($dst,755,true);
      }
      //检测目标目录下是否存在同名文件
      $dest=$dst.DIRECTORY_SEPARATOR.basename($src);
      if(is_dir($dest)){
        return false;
      }
      $handle=opendir($src);
      while(($item=@readdir($handle))!==false){
        if($item!=&#39;.&#39;&&$item!=&#39;..&#39;){
          if(is_file($src.DIRECTORY_SEPARATOR.$item)){
            copy($src.DIRECTORY_SEPARATOR.$item,$dst.DIRECTORY_SEPARATOR.$item);
          }
          if(is_dir($src.DIRECTORY_SEPARATOR.$item)){
            $func=__FUNCTION__;
            $func($src.DIRECTORY_SEPARATOR.$item,$dst.DIRECTORY_SEPARATOR.$item);
          }
        }
      }
      closedir($handle);
      return true;
    }
    // var_dump(copy_dir(&#39;uploads&#39;,&#39;test2/uploads&#39;));
    -------------------
    /**
     * 删除非空目录
     * @method del_dir
     * @param  string  $path 目录名称
     * @return boolean        true|false
     */
    function del_dir(string $path){
      //检测目录是否存在
      if(!is_dir($path)){
        return false;
      }
      $handle=opendir($path);
      while(($item=@readdir($handle))!==false){
        if($item!=&#39;.&#39;&&$item!=&#39;..&#39;){
          $pathName=$path.DIRECTORY_SEPARATOR.$item;
          if(is_file($pathName)){
            @unlink($pathName);
          }else{
            $func=__FUNCTION__;
            $func($pathName);
          }
        }
      }
      closedir($handle);
      rmdir($path);
      return true;
    }
    // var_dump(del_dir(&#39;test2&#39;));
Copier après la connexion

DIRECTORY_SEPARATOR

Sous Windows, nous utilisons habituellement "" comme séparateur de fichiers, mais sous Linux, le système ne reconnaît pas cet identifiant, nous devons donc introduire cette variable intégrée PHP : DIRECTORY_SEPARATOR.

Par exemple, la machine de développement est Windows, il existe un programme de téléchargement d'images et () est utilisé comme séparateur de fichiers, et le répertoire de stockage des fichiers téléchargés spécifié sur la machine de débogage est : define('ROOT',dirname(__FILE__)."upload"). Il est normal de déboguer localement, mais vous trouverez des erreurs lors du téléchargement sur un serveur Linux. Ce problème réside dans le séparateur de fichiers. Windows est habituellement utilisé comme séparateur de fichiers, mais Linux ne reconnaît que "/". Nous devons donc introduire la variable intégrée PHP suivante

.

DIRECTORY_SEPARATORPour plus de connaissances sur php, veuillez visiter le

tutoriel php

 !

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:cnblogs.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal