All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
SQL中通配符、转义符与--[--号的使用(downmoon)_[SQL,Server教程]
用C#实现智能设备上的NotifyIcon类_.net资料_编程技术
ADO.NET链接数据库DataSet对象应用实例
如何在十天内学会php之第七天_[PHP教程]
技巧:ASP.NET里的Session详细解释_.net资料_编程技术
SQL,Server和Oracle的常用函数对比_mssql学习_编程技术
基础知识之认识和使用,RSS+asp.net_.net资料_编程技术
Visual,C#命名空间详解_[Asp.Net教程]
php和explode_php资料_编程技术
SQL,SERVER,2005中全新的OUTPUT子句添加数据记录详解(理论篇)_mssql学习_编程技术
Reading number is top 10 pictures
The little woman's bright wire3
教你22句话
这玉米,买还是不卖?
战场废物2
The world's top ten most beautiful railway station1
胸部遭到偷窥的女人们
这是男生笨么?
Men don't mature ten sign
Exquisite decoration is not paying too much1
The little girl with long hair3
Download software ranking
WebService在.NET中的实战应用教学视频 → 第5集
尖东毒玫瑰A
Unix video tutorial8
功夫熊猫2(上集)
豪门浪荡史
仙剑奇侠传98硬盘WINXP版
asp.net技术内幕
Call Of Duty5
Unix video tutorial9
C++教程第四版
aaa published in(发表于) 2013/12/21 22:39:04 Edit(编辑)
用PHP5的DirectoryIterators递归扫描目录_php资料_编程技术

用PHP5的DirectoryIterators递归扫描目录_php资料_编程技术

用PHP5的DirectoryIterators递归扫描目录_php资料_编程技术-你的首页-uuhomepage.com

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

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

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

处理单级目录

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

列表A


$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


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

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

echo $file . "n";

}

?>

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

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

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

列表C说明了DirectoryTreeIterator的用法。

列表C


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

foreach($it as $path) {

echo $path . "n";

}

?>

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

|-ch01

| |-recipe01

| | |-example01.php

| | -example02.php

| |-recipe02

| | |-example01.php

| | -example02.php

| |-recipe03

| | -example01.php

...

为更好了解这些DirectoryIterator的价值,尝试用标准的文件和目录函数对本教程中说
明的三个应用编码。





添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.