程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP常用技術文之文件操作和目錄操作總結

PHP常用技術文之文件操作和目錄操作總結

編輯:關於PHP編程

     一、基本文件的操作

    文件的基本操作有:文件判斷、目錄判斷、文件大小、讀寫性判斷、存在性判斷及文件時間等

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 <?php    header("content-type","text/html;charset=utf-8");  /*  *聲明一個函數,傳入文件名獲取文件屬性  *@param string $fileName 文件名稱  */  function getFilePro($fileName)  {    if(!file_exists($fileName))    {      echo '文件不存在<br/>';      return;    }    /*是否是普通文件*/    if(is_file($fileName))    {      echo $fileName.'是一個文件<br/>';    }    /*是否是目錄*/    if(is_dir($fileName))    {      echo $fileName.'是一個目錄';    }    /*輸出文件的型態*/    echo '文件型態是:'.getFileType($fileName).'<br/>';    /*文件大小,轉換單位*/    echo '文件大小是:'.getFileSize(filesize($fileName)).'<br/>';    /*文件是否可讀*/    if(is_readable($fileName))    {      echo '文件可讀<br/>';    }    /*文件是否可寫*/    if(is_writable($fileName))    {      echo '文件可寫<br/>';    }    /*文件是否可執行*/    if(is_executable($fileName))    {      echo '文件可執行<br/>';    }       echo '文件創立時間:'.date('Y年m月j日',filectime($fileName)).'<br/>';    echo '文件最後修改時間:'.date('Y年m月j日',filemtime($fileName)).'<br/>';    echo '文件最後打開時間:'.date('Y年m月j日',fileatime($fileName)).'<br/>';  }     /*  *聲明一個函數,返回文件類型  *@param string $fileName 文件名稱  */  function getFileType($fileName)  {    $type = '';    switch(filetype($fileName))    {      case 'file':$type .= '普通文件';break;      case 'dir':$type .= '目錄文件';break;      case 'block':$type .= '塊設備文件';break;      case 'char':$type .= '字符設備文件';break;      case 'filo':$type .= '管道文件';break;      case 'link':$type .= '符號鏈接';break;      case 'unknown':$type .= '未知文件';break;      default:    }    return $type;  }     /*  *聲明一個函數,返回文件大小  *@param int $bytes 文件字節數  */  function getFileSize($bytes)  {    if($bytes >= pow(2,40))    {      $return = round($bytes / pow(1024,4),2);      $suffix = 'TB';    }    else if($bytes >= pow(2,30))    {      $return = round($bytes / pow(1024,3),2);      $suffix = 'GB';    }    else if($bytes >= pow(2,20))    {      $return = round($bytes / pow(1024,2),2);      $suffix = 'MB';    }    else if($bytes >= pow(2,10))    {      $return = round($bytes / pow(1024,1),2);      $suffix = 'KB';    }    else    {      $return = $bytes;      $suffix = 'B';    }   return $return." ".$suffix; }     /*調用函數,傳入test目錄下的test.txt文件*/  getFilePro('./test/div.html'); ?>

    結果:

    PHP常用技術文之文件操作和目錄操作總結 三聯

    二、目錄的操作

    目錄的操作有:遍歷目錄、刪除、復制、大小統計等

    1、遍歷目錄

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 /* *遍歷目錄 *@param string $dirName 目錄名 */ function findDir($dirName) {   $num = 0; /*統計子文件個數*/   $dir_handle = opendir($dirName); /*打開目錄*/   /*輸出目錄文件*/   echo '<table border="0" align="center" width="600" cellspacing="0" cellpadding="0">';   echo '<caption><h2>目錄'.$dirName.'下的文件</h2></caption>';   echo '<tr align="left" bgcolor="#cccccc"';   echo '<th>文件名</th><th>文件大小</th><th>文件類型</th><th>修改時間</th></tr>';     while($file = readdir($dir_handle))   {     $dirFile = $dirName.'/'.$file;     $bgcolor = $num++%2==0?'#ffffff':'#cccccc';     echo '<tr bgcolor='.$bgcolor.'>';     echo '<td>'.$file.'</td>';     echo '<td>'.filesize($dirFile).'</td>';     echo '<td>'.filetype($dirFile).'</td>';     echo '<td>'.date('Y/n/t',filemtime($dirFile)).'</td>';     echo '</tr>';   }   echo "</table>";   closedir($dir_handle); /*關閉目錄*/   echo "在<b>".$dirName."</b>目錄下共有<b>".$num.'</b>個子文件'; } /*傳遞當前目錄下的test目錄*/ findDir('./test');

    結果

    2、統計目錄大小

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 /*  *統計目錄大小  *@param string $dirName 目錄名  *@return double  */    function dirSize($dirName) {    $dir_size = 0;    if($dir_handle = @opendir($dirName))    {      while ($fileName = readdir($dir_handle))      {        /*排除兩個特殊目錄*/        if($fileName != '.' && $fileName != '..')        {          $subFile = $dirName.'/'.$fileName;          if(is_file($subFile))          {            $dir_size += filesize($subFile);          }          if(is_dir($subFile))          {            $dir_size += dirSize($subFile);          }        }      }      closedir($dir_handle);      return $dir_size;    }  }  /*傳遞當前目錄下的test目錄*/  $dir_size = dirSize('./test');  echo './test目錄文件大小是:'.round($dir_size / pow(1024,1),2).'KB';

    結果:

    3、刪除目錄

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 /* *刪除目錄 *@param string $dirName 目錄名  */  function delDir($dirName)  {    /*php中的mkdir函數就可以創建目錄*/    if(file_exists($dirName))    {      if($dir_handle = @opendir($dirName))      {        while ($fileName = readdir($dir_handle))        {          /*排除兩個特殊目錄*/          if($fileName != '.' && $fileName != '..')          {            $subFile = $dirName.'/'.$fileName;            if(is_file($subFile))            {              unlink($subFile);            }            if(is_dir($subFile))            {              delDir($subFile);            }          }        }        closedir($dir_handle);        rmdir($dirName);        return $dirName.'目錄已經刪除';      }    }  }  /*傳遞test目錄的副本test1*/  echo delDir('./test1');

    刪除成功的提示信息

    4、復制目錄

    1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 /* *復制目錄 *@param string $dirSrc 原目錄名 *@param string $dirTo 目標目錄名 */ function copyDir($dirSrc,$dirTo) {   if(is_file($dirTo))   {     echo '目標目錄不能創建';/*目標不是一個*/     return;   }   if(!file_exists($dirTo))   {     /*目錄不存在則創建*/     mkdir($dirTo);   }   if($dir_handle = @opendir($dirSrc))   {     while ($fileName = readdir($dir_handle))     {       /*排除兩個特殊目錄*/       if($fileName != '.' && $fileName != '..')       {         $subSrcFile = $dirSrc.'/'.$fileName;         $subToFile = $dirTo.'/'.$fileName;         if(is_file($subSrcFile))         {           copy($subSrcFile,$subToFile);         }         if(is_dir($subSrcFile))         {           copyDir($subSrcFile,$subToFile);         }       }     }     closedir($dir_handle);     return $dirSrc.'目錄已經復制到'.$dirTo.'目錄';   } } echo copyDir('./test','../testcopy');
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved