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

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


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

  • 相关阅读:
    WPF程序设计 :第四章 按钮与其他控件(Buttons and Other Controls)
    C#参考 : 枚举类型
    C#3.0 新特性学习笔记(3):匿名类型
    F#语言2008年9月CTP版已经更新
    C#3.0 新特性学习笔记(1): 对象集合初始化器
    WPF程序设计基础:属性系统
    C#3.0 新特性学习笔记(2):var 隐式声明变量
    MSSql行列转换的Sql语法 详解与实例
    WPF程序设计 :第一章 应用程序和窗口(The Application and the Window)
    WPF程序设计 :第二章 基本画刷(Basic Brushes)
  • 原文地址:https://www.cnblogs.com/lovebing/p/16102617.html
Copyright © 2020-2023  润新知