文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络网络编程PHP用PHP5的DirectoryIterators递归扫描目录
精品推荐
特别推荐
·Apache指南:.htaccess文件使用手册
·结合PHP使用HTML表单
·初学PHP的基础例程
·菜鸟学PHP之Smarty入门
·PHP环境安全配置教程
·PHP入门指导:如何学习PHP?
·Php+Mysql注入专题
·PHP:实现给上传图片加水印的程序代码
热点TOP10
·PHP实现的简单日历代码
·PHPBB3跟网站结合,实现登入网站同时登入论坛
·用MVC模型引导你的WEB设计思路
·使用Spring邮件抽象层发送简单邮件
·PHP上传文件的代码
·学习动态网页技术PHP中参数引用返回的实例
·入门:PHP编程“数组”的基础知识
·一个实现将动态页面转为静态的方案

用PHP5的DirectoryIterators递归扫描目录

日期:2007年7月11日 作者: 查看:[大字体 中字体 小字体]

PHP5中增加了Iterator,一组有助于导航和处理等级数据结构的现成接口,这是PHP5最有趣的新特性之一。

这些Iterator显著减少了处理XML文档树或文件集合所需的代码。PHP5中使用大量Iterator,包括ArrayIterator、 CachingIterator、LimitIterator、RecursiveIterator、SimpleXMLIterator和 DirectoryIterator。

通过DirectoryIterator可以迅速有效地对目录中的文件进行处理。在编码过程中稍微增加一些创造力,DirectoryIterator还可用于递归处理嵌套式目录树。这两个任务只需使用几行代码就可以完成,比“标准”处理方法有了显著提高。

处理单级目录

首先我们从简单的任务着手:处理一个单级目录。输入(或复制)以下代码(列表A),修改目录路径以反映当地配置:

列表A

<?php

$it = new DirectoryIterator("/tmp/mystuff");

foreach($it as $file) {

if (!$it->isDot()) {

echo $file . "n";

}

}

?>

在浏览器中查看这段代码的输出结果,你会在指定目录中看到一个文件列表。这一切是如何发生的呢?DirectoryIterator提供一个预先确 定的接口来重述一个目录的内容;示例目标目录的位置后,就可以把它当作一个标准的PHP数组来处理,每个元素代表目录中的一个文件。注意它使用isDot ()方法分别过滤掉“.”和“..”目录。

处理嵌套式目录树

递归处理一个嵌套式目录树几乎同样简单。在这种情况下,DirectoryIterator需要检查它在单级目录中遇到的每一个对象,确定其是一个文件还是目录。如果是一个目录,就更深入一级检验下一级的内容。这听起来似乎相当复杂,在过去一般都需要15行以上的代码。

但是,使用PHP5,你只需要两个新的Iterator:RecursiveIterator和RecursiveIteratorIterator,它们组合了所有上述功能。见列表B:

列表B

<?php

$it = new RecursiveDirectoryIterator("/tmp");

foreach(new RecursiveIteratorIterator($it) as $file) {

echo $file . "n";

}

?>

这时,输入结果将列出起始目录下的所有文件和目录。不必说,如果需要处理某个特定目录级下的所有文件——例如,递归压缩一个目录树;或修改一系列嵌套文件的组/所有者许可时——使用这种递归内置接口就非常方便。

现实应用:打印一个目录树

打印图形目录树是目录递归的一个常见应用。利用Iterator处理这个任务十分简单,因为Iterator类文档中包含一个专门为这个应用而编写 的实例类。DirectoryTreeIterator(感谢Marcus Boerger)为前面讨论的RecursiveIteratorIterator提供了其它改进,特别是在树结构中代表深度和位置的ASCII标记。

列表C说明了DirectoryTreeIterator的用法。

列表C

<?php

$it = new DirectoryTreeIterator("/tmp/cookbook/");

foreach($it as $path) {

echo $path . "n";

}

?>

以下是你看到的一部分输出结果:

-ch01

-recipe01

-example01.php

[1] [2] 下一页 



上一篇:Photoshop实例教程:简单制作林中阳光效果

下一篇:动态网页PHP+MYSQL如何插入记录到数据库

相关文章:
·树形目录的递归实现数据库+jsp+javabean
·Eclipse RCP插件开发中如何引用打包在插件目录下的图片资源
·JSP网站开发环境的目录结构标准
·PHP中读取某个目录下的文件
·QQ安装目录下各文件用途不完全揭密
·将电视节目录制为MPEG4
·无限级目录树最优算法的新研究
相关软件:
·扫描小精灵 V1.30 Build 2003.03.21
·磁盘扫描伴侣 V1.3
·美利坚合众国宪法(彩图扫描版PDF电子书)
·淘汰落后生产能力、工艺和产品的目录
·注册会计师重点目录(包括普讲和精讲)
·Aking提供的北医历年卫生综合考硕试题原题扫描
·photoshop 照相馆的故事 扫描版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot