ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

遍历文件夹php

2022-04-05 16:04:33  阅读:181  来源: 互联网

标签:遍历 dest 文件夹 file path 拷贝 php DS


遍历文件夹-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';



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


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

标签:遍历,dest,文件夹,file,path,拷贝,php,DS
来源: https://www.cnblogs.com/lovebing/p/16102617.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有