频道栏目
首页 > 程序开发 > Web开发 > PHP教程 > PHP进阶 > 网络编程 > 正文
目录操作
2016-01-06 16:46:03           
收藏   我要投稿

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

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

点击复制链接 与好友分享!回本站首页
相关TAG标签 目录
上一篇:IE缓存函数(PHP)
下一篇:PHP函数点评
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站