Heim > Backend-Entwicklung > PHP-Tutorial > 目录操作_PHP

目录操作_PHP

WBOY
Freigeben: 2016-06-01 12:30:21
Original
801 Leute haben es durchsucht

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

/**
*  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);

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage