首页 后端开发 php教程 目录操作_PHP

目录操作_PHP

Jun 01, 2016 pm 12:30 PM
function if public 操作 目录

即兴写的代码,大家可以完善一下

/**
*  DirTree.php 递归列出目录
*
* @Copyright
* @Author                skyCrack
* @Created               
* @Version                $Id$
*/

define('_DEBUG', 1);

class DirTree
{
        private $_dirRoot;
        private $_filter;
        private $_tmpBuff                        =        array();

        public function __construct($dirRoot = '.')
        {
                $this->_dirRoot = $dirRoot;
        }
       
        //使用 过滤器 或者 设置 $_safeFile ....
        public function setFilter($filter)
        {
                $this->_filter = $filter;
        }

        public function listDirFile($dir = '', $action='')
        {
                $curDir = ( empty($dir) ) ? $this->_dirRoot : $dir;
               
                $dh = @opendir($curDir);

                while ( $tmpName = readdir($dh) )
                {
                        if ( ($tmpName == '.') || ($tmpName == '..') ) continue;
                        $totalPath = $curDir . '/' . $tmpName;
                       
                        if ( is_object($this->_filter) )
                        {
                                if ( $this->_filter->doFilter($totalPath) ) continue;
                        }

                        if ( is_dir($totalPath) )
                        {
                                $this->_tmpBuff['0'][] = $tmpName;
                                if ( _DEBUG )
                                {
                                        echo 'is dir:' . $totalPath . '
';
                                }
                                if ( is_object($action) )
                                {
                                        $action->doAction($totalPath);
                                }
                                $this->listDirFile($totalPath, $action);
                        }
                        else
                        {
                                $this->_tmpBuff['1'][] = $tmpName;
                                if ( _DEBUG )
                                {
                                        echo 'is file:' . $totalPath . '
';
                                }
                                if ( is_object($action) )
                                {
                                        $action->doAction($totalPath);
                                }
                        }
                }
                closedir($dh);
        }
}

interface DirAction
{
        public function doAction($args);
}

interface DirFilter
{
        public function doFilter($args);
}

class NowAction implements DirAction
{
        public function doAction($args)
        {
                if ( _DEBUG )
                {
                        $numArgs = func_num_args();
                        echo $numArgs . '
';

                        for( $i = 0; $i                         print_r(func_get_arg($i) . '
');
                }
        }
}

=====================================================
应用 部分

set_time_limit(0);
require 'DirTree.php';

class Gbk2Utf8Action implements DirAction
{
        public function doAction($args)
        {
                $aimPath = ereg_replace('D:/html/web','D:/back', $args);
                if ( is_file($args) )
                {
                        $file = implode ('', file($args));
                        $content = iconv("gb2312", "UTF-8", $file);
                        $fh = fopen($aimPath, 'w');
                        fwrite($fh, $content);
                        fclose($fh);
                }
                else
                {
                        mkdir($aimPath);
                }
        }
}

class HtmlPhpFilter implements DirFilter
{
        public function doFilter($args)
        {
                $suffix = substr(strrchr($args, '.'), 1);
                if ( ('htm' == $suffix) || ('php' == $suffix) )
                        return false;
                else if ( is_dir($args) )
                        return false;
                else
                        return true;
        }
}

$dirTree = new DirTree();
$action = new Gbk2Utf8Action();
$filter = new HtmlPhpFilter();

$dirTree->setFilter($filter);
$dirTree->listDirFile('D:/html/web', $action);

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

PyCharm使用教程:详细指引你运行操作 PyCharm使用教程:详细指引你运行操作 Feb 26, 2024 pm 05:51 PM

PyCharm是一款非常流行的Python集成开发环境(IDE),它提供了丰富的功能和工具,使得Python开发变得更加高效和便捷。本文将为大家介绍PyCharm的基本操作方法,并提供具体的代码示例,帮助读者快速入门并熟练操作该工具。1.下载和安装PyCharm首先,我们需要前往PyCharm官网(https://www.jetbrains.com/pyc

c语言if判断多个条件怎么写 c语言if判断多个条件怎么写 Mar 25, 2024 pm 03:24 PM

在C语言中,if语句通常用于基于单个条件执行特定代码块。但是,通过使用逻辑运算符(如 &&、|| 和 !),可以组合多个条件来进行判断。包括使用逻辑与(&&)判断多个条件、使用逻辑或(||)判断至少一个条件、使用逻辑非(!)判断单个条件的否定,以及嵌套if语句和使用括号明确优先级。

什么是 sudo,为什么它如此重要? 什么是 sudo,为什么它如此重要? Feb 21, 2024 pm 07:01 PM

sudo(超级用户执行)是Linux和Unix系统中的一个关键命令,允许普通用户以root权限运行特定命令。sudo的功能主要体现在以下几个方面:提供权限控制:sudo通过授权用户以临时方式获取超级用户权限,从而实现了对系统资源和敏感操作的严格控制。普通用户只能在需要时通过sudo获得临时的特权,而不需要一直以超级用户身份登录。提升安全性:通过使用sudo,可以避免在常规操作中使用root账户。使用root账户进行所有操作可能会导致意外的系统损坏,因为任何错误或不小心的操作都将具有完全的权限。而

Linux Deploy的操作步骤及注意事项 Linux Deploy的操作步骤及注意事项 Mar 14, 2024 pm 03:03 PM

LinuxDeploy的操作步骤及注意事项LinuxDeploy是一款强大的工具,可以帮助用户在Android设备上快速部署各种Linux发行版,让用户能够在移动设备上体验到完整的Linux系统。本文将详细介绍LinuxDeploy的操作步骤以及注意事项,同时提供具体的代码示例,帮助读者更好地使用这一工具。操作步骤:安装LinuxDeploy:首先在

iOS的developer版和public版有什么区别? iOS的developer版和public版有什么区别? Mar 01, 2024 pm 12:55 PM

每年Apple发布新的iOS和macOS大版本之前,用户都可以提前几个月下载测试版抢先体验一番。由于公众和开发人员都使用该软件,所以苹果公司为两者推出了developer和public版即开发者测试版的公共测试版。iOS的developer版和public版有什么区别呢?从字面上的意思来说,developer版是开发者测试版,public版是公共测试版。developer版和public版面向的对象不同。developer版是苹果公司给开发者测试使用的,需要苹果开发者帐号才可以收到下载并升级,是

win10开机密码忘记按F2怎么操作 win10开机密码忘记按F2怎么操作 Feb 28, 2024 am 08:31 AM

想必很多的用户家里都有那么几台不用的电脑,因为长时间不用完全忘记了开机密码,于是想要知道一下,忘记密码要怎么操作呢?那就一起来看看吧。win10开机密码忘记按F2怎么操作1、按下电脑的电源键,然后开机时按下F2(不同电脑品牌进入bios的按键也不同)。2、在bios界面中,找到security选项(不同品牌电脑的位置可能有所不同)。一般都在顶部的设置菜单中。3、然后找到SupervisorPassword选项并且点击。4、这时候用户就可以看到自己的密码了,同时找到旁边的Enabled切换为Dis

华为Mate60 Pro截屏操作步骤分享 华为Mate60 Pro截屏操作步骤分享 Mar 23, 2024 am 11:15 AM

随着智能手机的普及,截屏功能成为日常使用手机的必备技能之一。华为Mate60Pro作为华为公司的旗舰手机之一,其截屏功能自然也备受用户关注。今天,我们就来分享华为Mate60Pro手机的截屏操作步骤,让大家能够更加便捷地进行截屏操作。首先,华为Mate60Pro手机提供了多种截屏方式,可以根据个人习惯选择适合自己的方式进行操作。下面详细介绍几种常用的截

目录怎么自动生成 自动生成目录格式怎么设置 目录怎么自动生成 自动生成目录格式怎么设置 Feb 22, 2024 pm 03:30 PM

在word中挑选目录的款式,操作完成就可以自动生成了。解析1进到电脑的word,点一下引入。2进去后,点一下文件目录。3接着挑选文件目录的款式。4操作完成,就可以看到文件目录自动生成了。补充:总结/注意事项文章的目录自动生成,其中包括一级标题、二级标题和三级标题,通常不超过三级标题。

See all articles