php对文件夹进行相关操作(遍历、计算大小)_php技巧

为大家分享的第一个操作内容: 遍历并打印指定目录下所有文件

<?php
//功能:遍历并打印指定目录下所有文件 

function scan_dir($dir_name,$dir_flag=1) {
  static $FILE_COUNT=1;        //记录文件数目 初值为1 目录名称不记
  $FILE_COUNT--;            //每调用一次scan_dir()函数自减1
  @$dir_handle=opendir($dir_name);   //抑制错误信息显示 便于自定义错误显示
  if(!$dir_handle)
  die("目录打开错误!");
  while(false!==($filename=readdir($dir_handle))) //文件名为‘0'时,readdir返回 FALSE,判断返回值是否不全等
  {                   

    $flag=$dir_flag;         //古怪的 is_dir($filename) ! $filename这个路径必须能够寻到!当$filename不存在或者不是目录时返回false
    if($filename!='.'&&$filename!='..')
    {
      $FILE_COUNT++;          //不记录当前路径和上一级路径
      while($flag>0&&--$flag)     //负数仍为真
        echo ' ';
      if(is_dir($dir_name.$filename)) //判断 是否为一个目录
      {
        echo '<strong>'."<a href=".$dir_name.$filename.">".$filename."</a></strong><br>";
        scan_dir($dir_name.$filename.'/',$dir_flag+1);   //$dir_flag标志目录树层次
      }
      else
      {
        echo "<a href=".$dir_name.$filename.">".$filename."</a><br>";
      }
    }
  }
  closedir($dir_handle);         //关闭目录句柄
  echo "文件总数:".$FILE_COUNT.'<br>';
} 

scan_dir('D:/AppServ/www/mytest/shopping/payment/'); 

/*总结:
1,关于路径 目录的路径末尾都加上 '/' 以便后面与文件名字符串连接 形成新的 路径字符串
2,目录遍历 这是一个关于树的问题
3,is_dir()函数第一个参数必须是一个能够识别的PATH否则会因目录不存在而返回一个false容易误解
得出 “这不是一个目录”的错误结论 形成逻辑上的错误
4,注意当前路径'.'和上一级路径'..'的剔除 否则 在递归环节造成死循环 直至内存耗尽出错。
5,dir_flag这个变量是记录树的深度 以便于目录分级分层输出                */
/*不足
1,输出排版不完善
2,逻辑与表示层混乱 不分明 大忌!
3,面向过程
*/

#####单目录#####

// 列出目录内容 $dir 不要加 '/'
function list_files($dir)
{
  if(is_dir($dir))
  {
    if($handle = opendir($dir))
    {
      while(($file = readdir($handle)) !== false)
      {
        if($file != "." && $file != ".." && $file != "Thumbs.db")
        {
          echo '<a href="'.$dir.'/'.$file.'">'.$file.'</a><br>'."\n";
        }
      }
      closedir($handle);
    }
  }
} 

list_files('D:/AppServ/www/mytest/shopping/payment'); 

 PHP 对文件进行的第二个操作内容:获得文件夹大小 计算文件

<?php
function getDirSize($dir)
{
  $handle = opendir($dir);
  while (false!==($FolderOrFile = readdir($handle)))
  {
    if($FolderOrFile != "." && $FolderOrFile != "..")
    {
      if(is_dir("$dir/$FolderOrFile"))
      {
        $sizeResult += getDirSize("$dir/$FolderOrFile");
      }
      else
      {
        $sizeResult += filesize("$dir/$FolderOrFile");
      }
    }
  }
  closedir($handle);
  return $sizeResult;
} 

//单位自动转换函数
function getRealSize($size)
{
  $kb = 1024;     //Kilobyte
  $mb = 1024 * $kb;  //Megabyte
  $gb = 1024 * $mb;  //Gigabyte
  $tb = 1024 * $gb;  //Terabyte 

  if($size < $kb)
  {
    return $size." B";
  }
  else if($size < $mb)
  {
    return round($size/$kb,2)." KB";
  }
  else if($size < $gb)
  {
    return round($size/$mb,2)." MB";
  }
  else if($size < $tb)
  {
    return round($size/$gb,2)." GB";
  }
  else
  {
    return round($size/$tb,2)." TB";
  }
} 

echo getRealSize(getDirSize('D:/AppServ/www/mytest/')); 

// get byte
function dirsize($dir)
{
  $handle=opendir($dir);
  $size = 0;
  while ( $file=readdir($handle) )
  {
  if ( ( $file == "." ) || ( $file == ".." ) ) continue;
  if ( is_dir("$dir/$file") )
  $size += dirsize("$dir/$file");
  else
  $size += filesize("$dir/$file");
  }
  closedir($handle);
  return $size;
} 

$big=dirsize(dirname($_SERVER['SCRIPT_FILENAME'])."/");
echo '('.$big.' bytes)'; 

以上就是关于php对文件夹的进行的基本操作,希望对大家的学习有所帮助。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索php遍历文件夹
c 遍历文件夹、python 遍历文件夹、遍历文件夹下所有文件、qt遍历文件夹下的文件、c 递归遍历文件夹,以便于您获取更多的相关知识。

时间: 2024-10-25 02:25:07

php对文件夹进行相关操作(遍历、计算大小)_php技巧的相关文章

PHP对文件夹递归执行chmod命令的方法_php技巧

本文实例讲述了PHP对文件夹递归执行chmod命令的方法.分享给大家供大家参考.具体分析如下: 这里对文件夹和文件递归执行chmod命令来改变执行权限 <?php function recursiveChmod($path, $filePerm=0644, $dirPerm=0755) { // Check if the path exists if(!file_exists($path)) { return(FALSE); } // See whether this is a file if(

php 文件夹删除、php清除缓存程序_php技巧

复制代码 代码如下: <?php header('content-type:text/html;charset=utf-8'); function delFile($fpath) { $filesize = array(); $filepath = iconv('gb2312', 'utf-8', $fpath); if (is_dir($fpath)) { if ($dh = opendir($fpath)) { while (($file = readdir($dh)) !== false)

iOS 文件及字符串相关操作汇总 - 持续更新中......

iOS 文件及字符串相关操作汇总 - 持续更新中...... 太阳火神的美丽人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一致"创作公用协议 转载请保留此句:太阳火神的美丽人生 -  本博客专注于 敏捷开发及移动和物联设备研究:iOS.Android.Html5.Arduino.pcDuino,否则,出自本博客的文章拒绝转载或再转载,谢谢合作. 1.获取应用包中文件的绝对路径: NSString *absoluteFileNam

文件(文件夹)删除拷贝操作类

文件(文件夹)相关操作.以下各种讨论基于Windows+VC7.0开发环境. 实现文件(文件夹)操作的方式和函数多种多样,在这里我们只是很浅显讨论其中的一两中方法的应用.如果你想了解更多的请参考你编译系统的的帮助文件.也可以和我讨论: MSN:Ugg_xchj@hotmail.com 为了更好的对文件(文件夹)进行操作,我们先讲解一些基本知识.最后我们将实现一个基于我们自己方法的文件(文件夹)create,copy,delete等操作的类.,如果你对文件(文件夹)操作已经非常熟悉,可以跳过前边部

PHP 创建文件(文件夹)以及目录操作代码_php技巧

一.目录操作 首先是从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出: 复制代码 代码如下: <?php $base_dir="filelist/"; $fso=opendir($base_dir); echo $base_dir."<hr/>"; while($flist=readdir($fso)){ echo $flist."<br/>";

winform实现bs下载文件夹上传操作

实验一 想到了WinForm 中的文件夹上传     在WebForm中引用WinForm->"using System.Windows.Forms;" 这里要涉及线程操作  代码如下 复制代码 [DirectMethod]         public void TopBarClick(string strOpearate)         {             btnUpdateEmInfos(strOpearate);          }         prote

PHP常用的文件操作函数经典收藏_php技巧

以下是个人总结的PHP文件操作函数.当然,这只是部分,还有很多,我没有列出来. 一 .解析路径: 1 获得文件名: basename(); 给出一个包含有指向一个文件的全路径的字符串,本函数返回基本的文件名.如果文件名是以 suffix 结束的,那这一部分也会被去掉. eg: 复制代码 代码如下: $path = "/home/httpd/html/index.php"; $file = basename($path,".php"); // $file is set

asp.net 获取文件夹中的图片的代码_实用技巧

前台: 复制代码 代码如下: <asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal" RepeatColumns="5" CellSpacing="25"> <ItemTemplate> <img src="<%# Eval("FullName") %&

基于PHP文件操作的详解_php技巧

知识点简介:1.判断文件或目录是否存在bool 复制代码 代码如下: file_exists(string filename)  2.取得文件名 复制代码 代码如下: basename(filepath)  3.打开文件 复制代码 代码如下: fopen(filename,mode)  4.获取文件路径信息 复制代码 代码如下: pathinfo(path)  5.写文件 复制代码 代码如下: fwrite(resource,string)  6.取绝对路径 复制代码 代码如下: realpat