遍历文件夹php

遍历文件夹-php

//统计某个目录的大小

<?php
header('content-type:text/html;charset=utf-8');
//统计某个目录的大小

/**
		@function 统计目录大小
		@param $dirname 路径
		@return int
 */
function getDirSize($dirname)
{
	$dirsize = 0;
	//打开目录
	$dir = opendir($dirname);
	//循环的读取该目录的所有文件及其子目录
	while (false !== ($filename = readdir($dir))) {
		// $file 表示该文件或者目录全路径
		$file = $dirname . '/' . $filename;
		//如果 是 . 或者 .. 不做处理
		if ($filename != "." && $filename != "..") {
			//判断是不是一个目录
			//如果是目录,就递归统计
			if (is_dir($file)) {
				$dirsize += getDirSize($file);
			} else {
				//如果是文件就直接计算大小
				$dirsize += filesize($file);
			}
		}
	}
	closedir($dir);

	return $dirsize;
}

//测试一下
$dir_path = 'd:/www';
echo getDirSize($dir_path);

遍历删除目录

<?php
	header('content-type:text/html;charset=utf-8');
	//递归的删除目录及其子目录

	/**
		@function 删除一个目录及其子目录
		@param $src 删除哪个目录
	*/
	function rrmdir($src) {
		//打开一个目录
		$dir = opendir($src);
		//遍历整个目录
		while(false !== ( $file = readdir($dir)) ) {
			//如果是 . 或者 .. 不做出来
			if (( $file != '.' ) && ( $file != '..' )) {
				//得到这个文件的全路径 
				$full = $src . '/' . $file;
				//如果是目录,就递归删除
				if ( is_dir($full) ) {
					rrmdir($full);
				}
				//如果不是目录,就直接删除
				else {
					unlink($full);
				}
			}
		}

		closedir($dir);
		//当发现这个目录是空目录时,就删除目录本身.
		rmdir($src);
	}

	//测试..
	$dir_path = 'd:/www';
	rrmdir($dir_path);
	echo '删除 目录 成功!';

遍历拷贝目录

<?php
	header('content-type:text/html;charset=utf-8');
	//拷贝目录:
	//定义一个常量,是目录的分割符号
	define('DS', DIRECTORY_SEPARATOR); 

	/**
	@function 拷贝一个目录的所有文件和子目录到 另外目录
	@param $path 源目录 (被拷贝)
	@param $dest 目标目录  (拷贝到哪里去)
	*/

	//需求
	// d:/test 目录 拷贝 到 f:/test 目录
    function copy_r( $path, $dest )
    {
		//先判断 源目录 是否存在?
		//如果是目录,就准备递归拷贝
        if( is_dir($path) )
        {
			//尝试创建 目标目录
            @mkdir( $dest );
			//这里 scandir 就是将该目录的所有文件和目录放到一个数组中.
            $objects = scandir($path);
			
			//如果该目录的内容[文件和子目录]>0
            if( sizeof($objects) > 0 )
            {
				//经典的对数组的遍历.
                foreach( $objects as $file )
                {
					//如果是 . 或者 .. 不处理 [php基础]
                    if( $file == "." || $file == ".." )
                        continue;
                    // go on
					//如果是目录,就递归拷贝
                    if( is_dir( $path.DS.$file ) )
                    {
                        copy_r( $path.DS.$file, $dest.DS.$file );
                    }
                    else
                    {	//如果是文件就直接拷贝
                        copy( $path.DS.$file, $dest.DS.$file );
                    }
                }
            }
            return true;
        }
        elseif( is_file($path) )
        {
			//如果是文件,就直接拷贝 
            return copy($path, $dest);
        }
        else
        {
			//如果不是文件和目录,就不拷贝
            return false;
        }
    }

	//做一个测试工作
	$src_path = 'd:/test';
	$dest_path = 'f:/test';
	copy_r($src_path, $dest_path);
	echo 'ok';



文章来源:刘俊涛的博客 欢迎关注公众号、留言、评论,一起学习。


若有帮助到您,欢迎捐赠支持,您的支持是对我坚持最好的肯定(_)

posted @ 2022-04-05 15:49  刘俊涛的博客  阅读(560)  评论(0编辑  收藏  举报