PHP递归遍历指定文件夹内的文件实现方法

今天早上在地铁上看了关于文件和文件夹的一章,正好最近刚搞懂linux的文件系统,觉得对文件属性的访问跟Shell命令很像,所以想晚上来实践一下。

发现php的文件夹函数好像没有提供遍历文件夹下的所有文件(包括子目录中的文件),于是,就想自己实现一个。

在写的时候发现一些操作文件夹的函数并不是自己想的那样。比如,dirname()根据提供的完整文件路径来取得文件所在的文件夹的路径,但如果你传入的是文件夹,它取的就是它的父文件夹。这点要明白。basename()也是同样的道理,传入文件夹路径取得就是文件夹的名字。这两个函数返回的结果结尾都不加'/'

<?php $dirPath='/home/WWW/Test';//目录,结尾不加'/‘ //执行遍历 recursion_readdir($dirPath); /** *@summary 重复times次字符char *@param $char 需要重复的字符 *@param $times 重复次数 *@return 返回重复字符组成的字符串 */ function forChar($char='-',$times=0){ $result=''; for($i=0;$i<$times;$i++){ $result.=$char; } return $result; } /** *@summary 递归读取目录 *@param $dirPath 目录 *@param $Deep=0 深度,用于缩进,无需手动设置 *@return 无 */ function recursion_readdir($dirPath,$Deep=0){ $resDir=opendir($dirPath); while($basename=readdir($resDir)){ //当前文件路径 $path=$dirPath.'/'.$basename; if(is_dir($path) AND $basename!='.' AND $basename!='..'){ //是目录,打印目录名,继续迭代 echo forChar('-',$Deep).$basename.'/<br/>'; $Deep++;//深度+1 recursion_readdir($path,$Deep); }else if(basename($path)!='.' AND basename($path)!='..'){ //不是文件夹,打印文件名 echo forChar('-',$Deep).basename($path).'<br/>'; } } closedir($resDir); }

以上这篇PHP递归遍历指定文件夹内的文件实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

时间: 2024-10-26 00:14:00

PHP递归遍历指定文件夹内的文件实现方法的相关文章

目录名称-递归遍历指定目录下的所有文件,依次按目录的名称与文件的名称排序

问题描述 递归遍历指定目录下的所有文件,依次按目录的名称与文件的名称排序 递归遍历指定目录下的所有文件,按依次按目录的名称与文件排序, 首先同一级目录的按目录名称排序,然后按文件的名称排序. 思路一:递归获取到所有文件后,根据件的全路径作在比较器中比较排序(file0.getAbsolutePath().compareTo(file1.getAbsolutePath())),这样可能不会很准.. 求大神支招啊! 想要的排序结果如下: d:/update/spc333/1/aa.txt d:/up

python压缩文件夹内所有文件为zip文件的方法

本文实例讲述了python压缩文件夹内所有文件为zip文件的方法.分享给大家供大家参考.具体如下: 用这段代码可以用来打包自己的文件夹为zip,我就用这段代码来备份 ? 1 2 3 4 5 6 7 import zipfile z = zipfile.ZipFile('my-archive.zip', 'w', zipfile.ZIP_DEFLATED) startdir = "/home/johnf" for dirpath, dirnames, filenames in os.wa

编程-怎么才能把一个文件夹内的文件重命名为另一个文件夹里的文件名(两个文件夹内的文件个数相同)

问题描述 怎么才能把一个文件夹内的文件重命名为另一个文件夹里的文件名(两个文件夹内的文件个数相同) 怎么才能把一个文件夹内的文件重命名为另一个文件夹里的文件名(两个文件夹内的文件个数相同) 本来是想用 api之类的 但是没有开放 不能用 就想着直接去读取使用的文件了 一种是 在 文件夹A中 找到一个a1.* 然后直接把文件夹B的 b1.*重命名为a1.* 另一种是 获取文件夹A中的所有文件的文件名列表写入到一个文档中 再给B中的文件逐一重命名 [本人水平比较次 所学过的太基础 网上也找到了一些

求教,怎样实现显示一个文件夹内所有文件并且可以下载

问题描述 初学者想用asp,.net做个能把文件上传下载的功能,上传的代码找到了功能实现了,现在找不到下载功能的代码,想问问怎样实现将一个文件夹的文件显示出来并且可以下载?求大神帮忙.或者帮我把这个代码补全了吗,运行时候总是有很多错误http://www.2cto.com/kf/201411/349646.html 解决方案 解决方案二:直接设置成目录浏览不就行了解决方案三:引用1楼shingoscar的回复: 直接设置成目录浏览不就行了 求详细给说说,刚接触不太懂解决方案四:ftp那种吧解决方

关于文件夹内图片文件获取

问题描述 我用一个folderbrowserdialog对话框打开一个文件夹里面全是jpg的图片我想问一下如何获取这些图片啊 解决方案 解决方案二:你获取的意思是什么?打开显示,还是另存到别的文件夹下?解决方案三:使用FileBrowserDialog.选择文件,FolderBrowserDialog可以选择文件夹.解决方案四:string[]dirs=Directory.GetFiles(folderBrowserDialog1.SelectedPath,"*.jpg");forea

Windows文件夹共享及文件权限管理

文件共享管理 1.只可对文件夹共享,如果只是要对某一文件共享,必须先将文件放入共享文件夹下 权限:可以设置被共享的文件夹的权限 缓存:如果共享文件网络切断,用户是否还可以脱机浏览共享文件夹 2.如何访问共享文件夹 单击网上邻居,就可以看到本网段内的所有被共享的文件夹 3.文件夹权限说明 A.文件权限类型说明 读取:此权限可以查看文件夹内的文件名称,子文件夹的属性. 写入:可以在文件夹里写入文件与文件夹.更改文件的属性. 列出文件夹目录:除了"读取"权限外,还有"列出子文件夹&

PHP递归遍历指定目录的文件并统计文件数量的方法_php技巧

本文实例讲述了PHP递归遍历指定目录的文件并统计文件数量的方法.分享给大家供大家参考.具体实现方法如下: <?php //递归函数实现遍历指定文件下的目录与文件数量 function total($dirname,&$dirnum,&$filenum){ $dir=opendir($dirname); echo readdir($dir)."<br>"; //读取当前目录文件 echo readdir($dir)."<br>&qu

PHP递归遍历指定目录的文件并统计文件数量的方法

 这篇文章主要介绍了PHP递归遍历指定目录的文件并统计文件数量的方法,涉及php文件及目录操作的技巧,非常具有实用价值,需要的朋友可以参考下     本文实例讲述了PHP递归遍历指定目录的文件并统计文件数量的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 <?php //递归函数实现遍历指定文件下的目录与文件数量 function total($di

求一个递归修改文件夹内全部子文件和文件夹名的程序(batch或者perl)

问题描述 求一个递归修改文件夹内全部子文件和文件夹名的程序(batch或者perl) 需求是这样的: 递归修改文件夹中所有名字带"aaa"字符串的 文件夹名或者文件名改成 bbb 例如: 01_aaa |_01_aaa_01 |_nbdaaa_01.txt |_nbcaaa_02.txt |_02_aaa_01 改成 01_bbb |_01_bbb_01 |_nbdbbb_01.txt |_nbcbbb_02.txt |_02_bbb_01 解决方案 http://blog.163.c