zoukankan      html  css  js  c++  java
  • PHP基本的文件和文件夹操作常用的汇总

    资源:http://www.ido321.com/835.html

    一、基本文件的操作

    文件的基本操作有:文件推断、文件夹推断、文件大小、读写性推断、存在性推断及文件时间等

       1: <?php
       2:     header("content-type","text/html;charset=utf-8");
       3: /*
       4: *声明一个函数。传入文件名称获取文件属性
       5: *@param string $fileName 文件名
       6: */
       7: function getFilePro($fileName)
       8: {
       9:     if(!file_exists($fileName))
      10:     {
      11:         echo '文件不存在<br/>';
      12:         return;
      13:     }
      14:     /*是否是普通文件*/
      15:     if(is_file($fileName))
      16:     {
      17:         echo $fileName.'是一个文件<br/>';
      18:     }
      19:     /*是否是文件夹*/
      20:     if(is_dir($fileName))
      21:     {
      22:         echo $fileName.'是一个文件夹';
      23:     }
      24:     /*输出文件的型态*/
      25:     echo '文件型态是:'.getFileType($fileName).'<br/>';
      26:     /*文件大小,转换单位*/
      27:     echo '文件大小是:'.getFileSize(filesize($fileName)).'<br/>';
      28:     /*文件是否可读*/
      29:     if(is_readable($fileName))
      30:     {
      31:         echo '文件可读<br/>';
      32:     }
      33:     /*文件是否可写*/
      34:     if(is_writable($fileName))
      35:     {
      36:         echo '文件可写<br/>';
      37:     }
      38:     /*文件是否可运行*/
      39:     if(is_executable($fileName))
      40:     {
      41:         echo '文件可运行<br/>';
      42:     }
      43:
      44:     echo '文件创立时间:'.date('Y年m月j日',filectime($fileName)).'<br/>';
      45:     echo '文件最后改动时间:'.date('Y年m月j日',filemtime($fileName)).'<br/>';
      46:     echo '文件最后打开时间:'.date('Y年m月j日',fileatime($fileName)).'<br/>';
      47: }
      48:
      49: /*
      50: *声明一个函数,返回文件类型
      51: *@param string $fileName 文件名
      52: */
      53: function getFileType($fileName)
      54: {
      55:     $type = '';
      56:     switch(filetype($fileName))
      57:     {
      58:         case 'file':$type .= '普通文件';break;
      59:         case 'dir':$type .= '文件夹文件';break;
      60:         case 'block':$type .= '块设备文件';break;
      61:         case 'char':$type .= '字符设备文件';break;
      62:         case 'filo':$type .= '管道文件';break;
      63:         case 'link':$type .= '符号链接';break;
      64:         case 'unknown':$type .= '未知文件';break;
      65:         default:
      66:     }
      67:     return $type;
      68: }
      69:
      70: /*
      71: *声明一个函数,返回文件大小
      72: *@param int $bytes 文件字节数
      73: */
      74: function getFileSize($bytes)
      75: {
      76:     if($bytes >= pow(2,40))
      77:     {
      78:         $return = round($bytes / pow(1024,4),2);
      79:         $suffix = 'TB';
      80:     }
      81:     else if($bytes >= pow(2,30))
      82:     {
      83:         $return = round($bytes / pow(1024,3),2);
      84:         $suffix = 'GB';
      85:     }
      86:     else if($bytes >= pow(2,20))
      87:     {
      88:         $return = round($bytes / pow(1024,2),2);
      89:         $suffix = 'MB';
      90:     }
      91:     else if($bytes >= pow(2,10))
      92:     {
      93:         $return = round($bytes / pow(1024,1),2);
      94:         $suffix = 'KB';
      95:     }
      96:     else
      97:     {
      98:         $return = $bytes;
      99:         $suffix = 'B';
     100:     }
     101:     return $return." ".$suffix;
     102: }
     103:
     104: /*调用函数。传入test文件夹下的test.txt文件*/
     105: getFilePro('./test/div.html');
     106: ?

    >

    结果:


    二、文件夹的操作

    文件夹的操作有:遍历文件夹、删除、复制、大小统计等

    1、遍历文件夹

       1: /*
       2: *遍历文件夹
       3: *@param string $dirName 文件夹名
       4: */
       5: function findDir($dirName)
       6: {
       7:     $num  = 0;  /*统计子文件个数*/
       8:     $dir_handle = opendir($dirName);  /*打开文件夹*/
       9:     /*输出文件夹文件*/
      10:     echo '<table border="0" align="center" width="600" cellspacing="0" cellpadding="0">';
      11:     echo '<caption><h2>文件夹'.$dirName.'下的文件</h2></caption>';
      12:     echo '<tr align="left" bgcolor="#cccccc"';
      13:     echo '<th>文件名称</th><th>文件大小</th><th>文件类型</th><th>改动时间</th></tr>';
      14:
      15:     while($file = readdir($dir_handle))
      16:     {
      17:         $dirFile = $dirName.'/'.$file;
      18:         $bgcolor = $num++%2==0?'#ffffff':'#cccccc';
      19:         echo '<tr bgcolor='.$bgcolor.'>';
      20:         echo '<td>'.$file.'</td>';
      21:         echo '<td>'.filesize($dirFile).'</td>';
      22:         echo '<td>'.filetype($dirFile).'</td>';
      23:         echo '<td>'.date('Y/n/t',filemtime($dirFile)).'</td>';
      24:         echo '</tr>';
      25:     }
      26:     echo "</table>";
      27:     closedir($dir_handle);  /*关闭文件夹*/
      28:     echo "在<b>".$dirName."</b>文件夹下共同拥有<b>".$num.'</b>个子文件';
      29: }
      30: /*传递当前文件夹下的test文件夹*/
      31: findDir('./test');

    结果



    2、统计文件夹大小

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

    结果



    3、删除文件夹

       1: /*
       2: *删除文件夹
       3: *@param string $dirName 文件夹名
       4: */
       5: function delDir($dirName)
       6: {
       7:     /*php中的mkdir函数就能够创建文件夹*/
       8:     if(file_exists($dirName))
       9:     {
      10:         if($dir_handle = @opendir($dirName))
      11:         {
      12:             while ($fileName = readdir($dir_handle))
      13:             {
      14:                  /*排除两个特殊文件夹*/
      15:                 if($fileName != '.' && $fileName != '..')
      16:                 {
      17:                     $subFile = $dirName.'/'.$fileName;
      18:                     if(is_file($subFile))
      19:                     {
      20:                         unlink($subFile);
      21:                     }
      22:                     if(is_dir($subFile))
      23:                     {
      24:                         delDir($subFile);
      25:                     }
      26:                 }
      27:             }
      28:             closedir($dir_handle);
      29:             rmdir($dirName);
      30:             return $dirName.'文件夹已经删除';
      31:         }
      32:     }
      33: }
      34: /*传递test文件夹的副本test1*/
      35: echo delDir('./test1');

    删除成功的提示信息



    4、拷贝文件夹

       1: /*
       2: *拷贝文件夹
       3: *@param string $dirSrc 原文件夹名
       4: *@param string $dirTo 目标文件夹名
       5: */
       6: function copyDir($dirSrc,$dirTo)
       7: {
       8:     if(is_file($dirTo))
       9:     {
      10:         echo '目标文件夹不能创建';/*目标不是一个*/
      11:         return;
      12:     }
      13:     if(!file_exists($dirTo))
      14:     {
      15:         /*文件夹不存在则创建*/
      16:         mkdir($dirTo);
      17:     }
      18:     if($dir_handle = @opendir($dirSrc))
      19:     {
      20:         while ($fileName = readdir($dir_handle))
      21:         {
      22:              /*排除两个特殊文件夹*/
      23:             if($fileName != '.' && $fileName != '..')
      24:             {
      25:                 $subSrcFile = $dirSrc.'/'.$fileName;
      26:                 $subToFile = $dirTo.'/'.$fileName;
      27:                 if(is_file($subSrcFile))
      28:                 {
      29:                     copy($subSrcFile,$subToFile);
      30:                 }
      31:                 if(is_dir($subSrcFile))
      32:                 {
      33:                     copyDir($subSrcFile,$subToFile);
      34:                 }
      35:             }
      36:         }
      37:         closedir($dir_handle);
      38:         return $dirSrc.'文件夹已经拷贝到'.$dirTo.'文件夹';
      39:     }
      40: }
      41: echo copyDir('./test','../testcopy');

  • 相关阅读:
    CSS盒子模型
    getContextPath、getServletPath、getRequestURI、request.getRealPath的区别
    MYSQL中的CASE WHEN END AS
    单点登录的精华总结
    git&github
    June 21st 2017 Week 25th Wednesday
    June 20th 2017 Week 25th Tuesday
    June 19th 2017 Week 25th Monday
    June 18th 2017 Week 25th Sunday
    June 17th 2017 Week 24th Saturday
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/5029943.html
Copyright © 2011-2022 走看看