php递归遍历文件目录

之前面试的时候别人有这么一到面试题,说是用php来遍历整个目录,心里想着这有什么难得,可是真的写的时候却写不出来,

所以说年轻人写代码戒骄戒躁,所以今天把这个写了一下,代码如下:

<?php
function traverse($filepath){
   if($dir_handle = @opendir($filepath)){
       while($dir = readdir($dir_handle)){
           if($dir!="."&&$dir!=".."){
               if(is_dir($filepath."/".$dir)){
                   traverse($filepath."/".$dir);
               }else{
                   echo $dir."<br>";
               }
           }
       }
   }

}
traverse("D:/phpfind/");

这里介绍俩个函数一个是opendir()这个函数是打开一个目录并返回句柄,若目录为空则返回空,

另一个是readdir(),它会依次读取文件,并且指针自动指向下一个,他的参数是opendir()的返回值;

时间: 2024-10-11 13:50:55

php递归遍历文件目录的相关文章

Java文件操作---递归遍历文件目录

在读取文件降序输出单词及其个数的基础上,将txt文件存入文件夹中,开始递归遍历文件目录,之后输出txt文件中的单词及其个数,仍然是降序排列. 代码如下 1 import java.io.BufferedReader; 2 import java.io.File; 3 import java.io.FileReader; 4 import java.util.Map; 5 import java.util.Map.Entry; 6 import java.util.ArrayList; 7 imp

递归与非递归遍历文件目录

递归遍历目录的缺点:遇到多层级目录时,层级越多,堆栈的负荷越大. [java] view plaincopyprint? import java.io.File; import java.util.LinkedList; /* * 采用非递归方式遍历目录及其子目录的文件 */ public class ProcessDirectory { public static int num;//文件总量 public static void main(String[] args) { String pa

java基础:递归应用---遍历文件目录

一:递归相关知识 程序调用自身的编程技巧称为递归( recursion). 一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量.递归的能力在于用有限的语句来定义对象的无限集合.用递归思想写出的程序往往十分简洁易懂. 一般来说,递归需要有边界条件.递归前进段和递归返回段.当边界条件不满足时,递归前进:当边界条件满足时,递归返回

PHP文件操作:遍历文件目录

1 <?php 2 /*遍历目录,列出目录中的文件 3 * array scandir(string $directory [,int $sorting_order]) 4 * $directory为待遍历目录的路径名,$sorting_order为可选参数,设置文件的降序或者升序排列 5 * */ 6 $path='./'; //为当前目录 7 if(file_exists($path)){ 8 $files_asc=scandir($path); 9 $files_desc=scandir(

【Lua】Lua + openresty遍历文件目录

OpenResty (也称为 ngx_openresty)是一个全功能的 Web 应用服务器,它打包了标准的 Nginx 核心,很多的常用的第三方模块,以及它们的大多数依赖项. 今天用OpenResty + lua来遍历指定目录,返回json字符串 我们用Lua来遍历文件目录,并用nginx来访问lua文件,使其返回这个目录的json字符串. Lua代码: 1 local lfs = require("lfs") 2 3 function getType(path) 4 return

二叉树的非递归遍历--京东2015笔试回忆

题目回忆: C/C++研发试卷:偏重于数据结构的考察,编程题有2题+1题附加题: 1.输入整数n,求m,m>9,m中各个数位的乘积=n的最小整数;如n=36,m=49; 2.二叉树前序遍历的非递归实现(本文的总结) 3.求第n个数,这个序列满足(2^i)*(3^j)*(5^k),前7个为:2,3,4,5,6,8,10 .... 小题有基本的数据结构.程序运行结果.SQL题目. 4.删除表格用DROP命令,死锁产生的条件: 4.1互斥使用(资源独占) 一个资源每次只能给一个进程使用 4.2.不可强

数据结构——二叉树遍历之“递归与非递归遍历”

简述 二叉树的遍历分为先序遍历.中序遍历和后序遍历.如下图所示: 递归遍历 private void bianli1(List<Integer> list, TreeNode root) { // 先序遍历 if (root == null) { return; } list.add(root.val); bianli1(list, root.left); bianli1(list, root.right); } private void bianli2(List<Integer>

JAVA递归、非递归遍历二叉树(转)

原文链接: JAVA递归.非递归遍历二叉树 import java.util.Stack; import java.util.HashMap; public class BinTree { private char date; private BinTree lchild; private BinTree rchild; public BinTree(char c) { date = c; } // 先序遍历递归 public static void preOrder(BinTree t) {

递归遍历二叉树

递归遍历分三种: 1.前序遍历二叉树(二叉树非空) 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 2.中序遍历二叉树(二叉树非空) 1.中序遍历左子树 2.访问根节点 3.中序遍历右子树 3.后序遍历二叉树(二叉树非空) 1.后序遍历左子树 2.后序遍历右子树 3.访问根节点 三种递归的算法遍历,终止条件是二叉树为空的时候. 记忆的方法呢,前中后,都是以根节点命名的,前序,先访问根节点,中序,根节点在第二,后序,根节点最后进行访问.