`
天梯梦
  • 浏览: 13730956 次
  • 性别: Icon_minigender_2
  • 来自: 洛杉矶
社区版块
存档分类
最新评论

php 操作文件夹 (遍历 计算大小)

阅读更多

1. 遍历并打印指定目录下所有文件

 

<?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 '&nbsp';
			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');
 

 

 

 

2. 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)';
 

 

计算文件大小用 filesize()

 

http://www.w3school.com.cn/php/func_filesystem_filesize.asp

 

 

 

遍历文件夹下所有文件,编辑删除


 

 

 

分享到:
评论
2 楼 天梯梦 2011-12-01  
hongxingxu101 写道
找这个文件夹了,我想任意下载一个文件,怎么实现???


这个也不难,你可以把文件夹打包之后下载,下载完之后删除就可以了。

http://justcoding.iteye.com/blog/660812
1 楼 hongxingxu101 2011-12-01  
找这个文件夹了,我想任意下载一个文件,怎么实现???

相关推荐

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

    在PHP中,对文件夹进行操作是常见的任务,如遍历目录、计算文件夹大小等。下面我们将详细探讨这些知识点。 首先,我们来看如何遍历并打印指定目录下的所有文件。`scan_dir` 函数是一个递归函数,用于遍历目录。函数...

    php计算空间大小及删除文件夹

    本文将深入探讨如何使用PHP来计算一个目录或文件夹的总大小,以及如何安全地删除文件夹。这些功能在处理大量数据存储、清理临时文件或者优化服务器空间时尤其有用。 首先,我们来看如何计算一个目录的总大小。在PHP...

    PHP简单遍历文件批量加文字水印,图片水印

    下面是一个简单的递归遍历文件夹的例子: ```php function traverseDirectory($dir) { $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($dir)); foreach ($iterator as $file) { // ...

    PHP递归遍历指定文件夹内的文件实现方法

    在实际应用中,我们可能会需要对遍历过程中获取的文件或目录进行其他操作,比如计算文件大小、获取文件的元数据或者根据文件类型过滤。可以在这个函数的基础上扩展,添加更多功能。同时,也可以考虑错误处理和性能...

    php使用递归计算文件夹大小

    PHP递归计算文件夹大小的核心思想是:遍历指定目录下的所有文件和子目录,如果是目录,则递归调用当前函数计算该目录的大小;如果是文件,则直接读取文件大小并累加。 下面是一个递归函数`dir_size`的实现代码,...

    PHP计算指定文件夹的信息的函数类.zip

    这个"PHP计算指定文件夹的信息的函数类"提供了一种高效且结构化的解决方案,用于获取文件夹及其子文件夹的详细信息,包括文件数量、总大小以及目录结构的格式化输出。下面我们将详细探讨这个函数类的实现原理和应用...

    PHP计算指定文件夹的信息的函数类

    标题所提及的“PHP计算指定文件夹的信息的函数类”就是这样一个工具,它允许开发者方便地获取并展示指定目录的相关信息。 首先,我们来理解一下这个函数类的基本结构。一个PHP类通常包含一系列的方法(functions)...

    PHP递归实现文件夹的复制、删除、查看大小操作示例

    PHP语言拥有丰富的文件操作函数,但对于文件夹的操作,如复制、删除和查看大小等,标准函数库中并没有直接提供相应的函数。因此,我们需要利用递归算法来实现这些操作。 首先,要了解在PHP中如何查看文件夹的大小。...

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例 PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5...遍历文件夹文件 采集网络数据 随机字符串 验证码 验证码类 验证输入的邮件地址是否合法

    PHP获取文件夹大小函数用法实例

    函数接收一个参数`$dir`,即需要计算大小的目录路径。函数的主体部分通过`opendir`打开一个目录句柄,然后使用`readdir`函数来读取目录中的每一个文件或子目录。对于每一个文件或子目录,如果它不是`.`(当前目录)...

    PHP 压缩文件夹的类代码

    2. **文件遍历**:调用`openFile`方法,递归地遍历文件夹中的所有文件和子文件夹。 - 对于每个文件,读取其内容并通过`addFile`方法进行压缩处理。 - 对于子文件夹,再次调用`openFile`进行递归处理。 3. **文件...

    PHP基于迭代实现文件夹复制、删除、查看大小等操作的方法

    与计算文件夹大小类似,迭代复制文件夹也涉及初始化、循环、执行操作和更新状态四个步骤。初始化时,创建一个堆栈并加入源目录,接着在循环中弹出堆栈中的目录,创建目标目录,然后读取源目录中的文件和子目录。对于...

    PHP统计目录中文件以及目录中目录大小的方法

    - 如果是目录,使用`is_dir()`检查,然后调用`dirSize()`计算大小,并输出相关信息。 - 如果是文件,使用`filesize()`获取大小,同样输出相关信息。 这里的输出信息包括文件名、创建时间、文件类型以及经过`toSize...

    php读取出一个文件夹及其子文件夹下所有文件的方法示例

    在PHP编程语言中,有时我们需要读取一个文件夹及其所有子文件夹下的所有文件,这在处理文件系统操作时非常常见。以下是一个简单的PHP函数示例,它将遍历指定目录及其子目录,并收集所有文件的名称。 首先,让我们...

    php计算指定目录下文件占用空间的方法

    在遍历的过程中,使用 getSize() 方法获取每个文件的大小,并将其累加到一个名为 $totalSize 的变量中,从而计算出所有文件的总大小。 上述示例代码演示了如何使用PHP的面向对象的方式来遍历目录,计算文件占用空间...

    PHP多张图片合并成一张图片合并成九宫格图片.zip

    如果需要合并多张图片,可以遍历文件夹内的所有图片并进行上述操作。在提供的`pngs.php`或`png.php`文件中,可能会有类似以下的代码来处理一个包含多张PNG图片的`imgs`目录: ```php $images = glob('imgs/*.png'...

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

    在实际使用时,你可以通过设置变量`$fpath`为需要清理的文件夹路径,如示例中的`D:/test`,然后调用`delFile()`函数执行清理操作。最后,`printf()`函数会计算节省的磁盘空间,并以MB为单位显示结果。 此外,代码中...

Global site tag (gtag.js) - Google Analytics