php 文件查找类,PHP类搜索定位目录树的具体实现方式解析
大家现在也许对PHP语言比较感兴趣,因为它能够帮助我们很轻松的建设一个功能强大的网站。今天我们将向大家介绍的是有关PHP类搜索定位目录树的方法。大多数时候,在嵌套的PHP结 构里进行迭代需要你写出能够一个按顺序穿过层级、并检查其中每一个元素的递归函数。
File_Find类是为了能让你真 正做好两件事情而设计的。***,它可以让你扫描一个目录树,然后将其转换成为PHP结构——一个嵌套的数组——它反映了原始层级的父子关系。第二,它可以 让你在一个目录树下搜索一个或多个类型相匹配的文件。这种类型可以是一个简单的字符串,也可以是一个复杂的Perl规则的表达式;File_Find能够 处理上述两种中的任意一种格式,并将返回一个包括了每一对的详细文件和路径信息的数组。
一开始,手动安装程序包,你可以下载它,然后将其内容提取到PEAR根目录下,也可以利用PEAR安装程序。
接下来,创建以下PHP脚本(列表A),并将它保存在你的Web服务器的文件根目录下:
PHP类搜索定位目录树列表A
// include class
include(”Find.php”);
// initialize finder
$finder=newFile_Find();
// read directory tree and print
$tree= $finder->mapTree(”/tmp”);
print_r($tree);
?>
在此,我初始化了一个新的File_Find()对象, 并用一个目录路径调用其mapTree()方法。mapTree()方法读取指定的目录,然后产生它的一个两元素的层级结构“数组表(array map)”。此数组中***个元素列出了所找到的所有目标目录下的子目录,而第二个元素列出了找到的所有文件。然后就有可能扫描这些序列,在应用程序中使用 它们了——例如,重建目录树,或者在自定义标准的基础上筛选文件和目录。
列表B是以上脚本输出的一个例子:
PHP类搜索定位目录树列表B
Array
(
[0] =>Array
(
[0] =>/tmp
[1] =>/tmp/dummyA
[2] =>/tmp/dummyB
[3] =>/tmp/dummyA/dummyC
)
[1] =>Array
(
[0] =>/tmp/data.txt
[1] =>/tmp/dummyB/metoo.mp3
[2] =>/tmp/dummyB/track.dat
[3] =>/tmp/dummyA/dummyC/parrot.gif
)
)
你也可以用另一种方式,用mapTreeMultiple()方法,它递归读取指定的目录,产生一个复制其树形结构的嵌套数组。列表C为你展示了一个例子。
PHP类搜索定位目录树列表C
// include class
include(”Find.php”);
// initialize finder
$finder=newFile_Find();
// print recursive directory tree
$tree= $finder->mapTreeMultiple(”/tmp”);
print_r($tree);
?>
列表D显示了输出结果:
PHP类搜索定位目录树列表D
Array
(
[0] =>data.txt
[dummyA] =>Array
(
[dummyC] =>Array
(
[0] =>parrot.gif
)
)
[dummyB] =>Array
(
[0] =>metoo.mp3
[1] =>track.dat
)
)
提示:你可以给mapTreeMultiple()加上一个可选的参数,限定它在执行递归时向下查询的层数。
用glob()方法,你可以在指定目录下搜索与特定Perl兼容型的规则表达式匹配的文件。请看一下列表E。
PHP类搜索定位目录树列表E
// include class
include(”Find.php”);
// initialize finder
$finder=newFile_Find();
// search for matching files in named directory
$results= $finder->glob(”/mp3/i”, “/usr/local/stuff”, “perl”);
print_r($results);
?>
在这里,glob()方法访问指定目录下所有名称中带有字符串mp3的文件。注意我对修饰符i的使用,它使得搜索没有大小写之分,还有我使用了第三个自变量,告诉类要使用Perl regex函数,而不是默认的PHP函数。
File_Find类由于它的search()方法而真正发挥作用起来,这个方法结合了mapTreeMultiple()和glob()方法的能力进行多层目录搜索。列表F中是一个例子。
PHP类搜索定位目录树列表F
// include class
include(”Find.php”);
// initialize finder
$finder=newFile_Find();
// search for matching files
// in named directory and subdirectories
$results= $finder->search(”/exe/i”, “/usr/local/winstuff”, “perl”);
print_r($results);
?>
列表G显示了输出的一个样本:
PHP类搜索定位目录树列表G
Array
(
[0] =>/usr/local/winstuff/4HELP.EXE
[1] =>/usr/local/winstuff/ARJ.EXE
[2] =>/usr/local/winstuff/bzip2.exe
[3] =>/usr/local/winstuff/CRLF.EXE
[4] =>/usr/local/winstuff/DECODE.EXE
[5] =>/usr/local/winstuff/GREP.EXE
[6] =>/usr/local/winstuff/GPG/gpg.exe
[7] =>/usr/local/winstuff/GPG/uninst-gnupg.exe
[8] =>/usr/local/winstuff/GPG/WinPT.exe
[9] =>/usr/local/winstuff/Fprot/F-PROT.EXE
)
这就是你的递归目录查询,仅仅只有四行代码!
正如你所看到的那样,File_Find使得简单有效地完成一个相对复杂的任务成为可能,而且你会感到最小的压力,这也就是我为什么极力向你推荐它的原因。下次当你需要在PHP类搜索定位目录树上执行一个文件查找操作时,不妨你自己尝试一下。祝你编程快乐!
【责任编辑:曹凯 TEL:(010)68476606】
点赞 0
php 文件查找类,PHP类搜索定位目录树的具体实现方式解析相关推荐
- python与txt文件查找,在Python中搜索TXT文件
readlines()会出现内存错误,因为给定了文件大小,您可能会读入内存无法合理处理的数据.因为这个文件是一个XML文件,所以您应该能够通读它,iterparse()将缓慢地解析XML,而不会占用多 ...
- sysvol 域控制器 文件_WinServer域控制器中重定位SYSVOL树
WinServer域控制器中重定位SYSVOL树 作者 HonestQiao 2005年11月13日 16:00 概要 系统卷(或称 SYSVOL)是可由文件复制服务 (FRS) 复制的文件夹.文件系 ...
- java查找目录文件函数_java 实现 文件操作工具集。包括文件、目录树的拷贝、删除、移动、查找等工具函数...
import java.io.*; /** * 文件操作工具集.包括文件.目录树的拷贝.删除.移动.查找等工具函数. * @author InternetTeam3 * @version 1.0 */ ...
- java7 文件_Java SE 7新特性之文件操作(9) - 遍历目录树
在有些时候,我们可能需要遍历整个目录树,例如需要寻找所有的.java文件.Java SE 7提供了很方便的方法来实现这类的功能. Java SE 7提供的实现这类功能的方法就是FileVisitor接 ...
- POI以SAX方式解析Excel2007大文件(包含空单元格的处理) Java生成CSV文件实例详解...
http://blog.csdn.net/l081307114/article/details/46009015 http://www.cnblogs.com/dreammyle/p/5458280. ...
- Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件...
关注finddreams,一起分享,一起进步!http://blog.csdn.net/finddreams/article/details/45569089 在开发中,我们常常用打印log的方 ...
- find排除文件 linux_Linux下find一次查找多个指定类型文件,指定文件或者排除某类文件,在 GREP 中匹配多个关键...
Linux下find一次查找多个指定文件或者排除某类文件,在 GREP 中匹配多个关键字的方法 (1)Linux下find一次查找多个指定文件: 查找a.html和b.html find . -nam ...
- Linux查找多个文件、排除某类文件、匹配文件多处内容
Linux下find一次查找多个指定文件或者排除某类文件,在 GREP 中匹配多个关键字的方法 (1)Linux查找多个文件: 查找a.html和b.html find . -name "a ...
- 【Android 热修复】热修复原理 ( 类加载机制 | PathClassLoader 加载 Dex 机制 | PathDexList 查找 Class 机制 | 类查找的顺序机制 )
文章目录 一. PathClassLoader 加载 Dex 机制 二. PathDexList 查找 Class 机制 三. 类查找的顺序机制 一. PathClassLoader 加载 Dex 机 ...
最新文章
- .NET : 再谈谈XML中的命名空间问题
- 费曼:所有的科学知识都是不确定的
- 体育场[带权并查集]
- war包部署-配置入口类
- 5.4 ~ 5.6 刷题记录
- Linux 普通用户拿到root权限及使用szrz命令上传下载文件
- .pfx 证书和 .cer 证书
- iOS开发笔记--Layer 图层圆角、边框 、底纹其他常用操作
- Google 的 “行星级” cron 系统
- redis debug命令详解
- 如何夺回Windows 10系统权限?一分钟就够
- C++程序设计方法3:数组下标运算符重载
- 欢迎大家关注我的博客,让我们一起在知识的海洋中并肩自由翱翔!
- 电商商城小程序项目完整源码(微信小程序)
- 微信公众号查题搜题平台 功能齐全
- IntelliJ IDEA 解决控制台不能显示日志
- SAP 采购订单入库——移动类型
- iPhone/iPad应用使用麦克风的开启和关闭
- 手机出货量大跌34.9%,2019小米将何去何从
- 基本IO接口技术——微机第七章笔记
热门文章
- android 虚拟按键 增减和删除的方法
- u-boot移植第二弹——移植2012.10u-boot到RealARM210 cortex-A8开发板
- python selenium p_python selenium 常见问题列表
- 小学计算机几年级学3d建模,学了4年手绘和建模,你终于不会思考了
- 裴蜀定理(note)
- 1205: 正序数(归并排序统计正序数)
- 低代码平台是“业务上云”走向万千企业的最后一公里
- 首次公开!阿里巴巴云原生实时数仓核心技术揭秘
- Linux纯干货知识总结|面试专用
- 时间和空间复杂度概述【Java _demo版】