Zusammenfassung der PHP-Verzeichnisoperationen

藏色散人
Freigeben: 2023-04-08 11:14:01
nach vorne
2638 Leute haben es durchsucht

Zusammenfassung der PHP-Verzeichnisoperationen

PHP-Verzeichnisoperation (mit angehängter gepackter Verzeichnisoperationsfunktionsdatei)

Gemeinsame API der Verzeichnisfunktionsbibliothek

    $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;);
Nach dem Login kopieren

Verzeichnisse erstellen und löschen

Mehrstufige Verzeichnisse

    //创建目录
    //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;));
Nach dem Login kopieren

Verzeichnisse lesen

$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);
Nach dem Login kopieren

DirectoryIteratorVerwendung von Iteratoren

  $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";//文件类型
      }
    }
Nach dem Login kopieren

[Super praktische verzeichnisbezogene Funktionskapselung]

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;));
Nach dem Login kopieren

DIRECTORY_SEPARATOR

Unter Windows verwenden wir normalerweise „“ als Dateitrennzeichen, aber unter Linux erkennt das System diesen Bezeichner nicht, daher müssen wir diese in PHP integrierte Variable einführen: DIRECTORY_SEPARATOR.

Der Entwicklungscomputer ist beispielsweise Windows, es gibt ein Bild-Upload-Programm und () wird als Dateitrennzeichen verwendet, und das auf dem Debugging-Computer angegebene Speicherverzeichnis für hochgeladene Dateien lautet: define('ROOT',dirname(__FILE__)."upload") Es Es ist normal, lokal zu debuggen, aber beim Hochladen auf einen Linux-Server treten Fehler auf. Dieses Problem liegt im Dateitrennzeichen. Windows wird normalerweise als Dateitrennzeichen verwendet, Linux erkennt jedoch nur „/“. Daher müssen wir die folgende in PHP integrierte Variable

einführen.

DIRECTORY_SEPARATORWeitere PHP-Kenntnisse finden Sie im

PHP-Tutorial

!

Das obige ist der detaillierte Inhalt vonZusammenfassung der PHP-Verzeichnisoperationen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage