使用PHP遍历文件夹与子目录的函数代码

我们要使用的函数有 Scandir,它的作用是列出指定路径中的文件和目录,就像 Dir 一样。


> 与更强力的 Glob() 函数,作用是以数组的形式返回与指定模式相匹配的文件名或目录。
> 友情提醒,千万别像小邪那样在电脑前面呆太长时间,否则就会像小邪一样得见鬼的高血糖。

一. 遍历单层文件夹:

> 在扫描单层文件夹的问题是,两个函数的结果虽有不同,不过表现是相差不大的。
> Scandir 函数会提供额外两行,分别是 “.” 和 “..” ,而 Glob 则是没有的。


复制代码 代码如下:

function get_dir_scandir(){
$tree = array();
foreach(scandir('./') as $single){
echo $single."<br/>\r\n";
}
}
get_dir_scandir();

function get_dir_glob(){
$tree = array();
foreach(glob('./*') as $single){
echo $single."<br/>\r\n";
}
}
get_dir_glob();

二. 递归遍历文件树:

> 在递归扫描文件夹树的问题上,还是 Glob 函数的表现好一点,很准确的说。
> Scandir 函数会莫名其妙扫描两次 ../ 处的文件,也就是说如果小邪有俩文件。
> ../b.php 和 ../a.php,结果就会在扫描报告上面出现两次,很是奇怪。


复制代码 代码如下:

//Update at 2010.07.25 - 以下代码作废
$path = '..';
function get_filetree_scandir($path){
$tree = array();
foreach(scandir($path) as $single){
if(is_dir('../'.$single)){
$tree = array_merge($tree,get_filetree($single));
}
else{
$tree[] = '../'.$single;
}
}
return $tree;
}
print_r(get_filetree_scandir($path));

//Update at 2010.07.25 - 以下为新代码
$path = './';
function get_filetree_scandir($path){
$result = array();
$temp = array();
if (!is_dir($path)||!is_readable($path)) return null; //检测目录有效性
$allfiles = scandir($path); //获取目录下所有文件与文件夹
foreach ($allfiles as $filename) { //遍历一遍目录下的文件与文件夹
if (in_array($filename,array('.','..'))) continue; //无视 . 与 ..
$fullname = $path.'/'.$filename; //得到完整文件路径
if (is_dir($fullname)) { //是目录的话继续递归
$result[$filename] = get_filetree_scandir($fullname); //递归开始
}
else {
$temp[] = $filename; //如果是文件,就存入数组
}
}
foreach ($temp as $tmp) { //把临时数组的内容存入保存结果的数组
$result[] = $tmp; //这样可以让文件夹排前面,文件在后面
}
return $result;
}
print_r(get_filetree_scandir($path));

> Glob 函数扫描灰常准确,并且会自动按照字母排好顺序,貌似是最佳方案。


复制代码 代码如下:

$path = '..';
function get_filetree($path){
$tree = array();
foreach(glob($path.'/*') as $single){
if(is_dir($single)){
$tree = array_merge($tree,get_filetree($single));
}
else{
$tree[] = $single;
}
}
return $tree;
}
print_r(get_filetree($path));

时间: 2011-09-23

PHP获取文件绝对路径的代码(上一级目录)

PHP获取文件绝对路径 复制代码 代码如下: <?php echo __FILE__ ; // 取得当前文件的绝对地址,结果:D:\www\test.php echo dirname(__FILE__); // 取得当前文件所在的绝对目录,结果:D:\www\ echo dirname(dirname(__FILE__)); //取得当前文件的上一层目录名,结果:D:\ ?> chdir() 函数 定义和用法 chdir() 函数把当前的目录改变为指定的目录. 若成功,则该函数返回 true,

php读取出一个文件夹及其子文件夹下所有文件的方法示例

本文实例讲述了php读取出一个文件夹及其子文件夹下所有文件的方法.分享给大家供大家参考,具体如下: 今天的需求要在一个文件夹中读取出这个文件夹下所有的文件,当然也包括这个文件夹下面所有的子文件夹,当然网上有很多的教程,但为了自己理解得更加深刻,还是自己写一下吧.代码如下: $path = './use'; $result = scanFile($path); function scanFile($path) { global $result; $files = scandir($path); f

PHP遍历某个目录下的所有文件和子文件夹的实现代码

复制代码 代码如下: <?php function read_all_dir ( $dir )    {        $result = array();        $handle = opendir($dir);        if ( $handle )        {            while ( ( $file = readdir ( $handle ) ) !== false )            {                if ( $file != '.'

PHP 创建文件(文件夹)以及目录操作代码

一.目录操作 首先是从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出: 复制代码 代码如下: <?php $base_dir="filelist/"; $fso=opendir($base_dir); echo $base_dir."<hr/>"; while($flist=readdir($fso)){ echo $flist."<br/>";

php读取目录及子目录下所有文件名的方法

本文实例讲述了php读取目录及子目录下所有文件名的方法,分享给大家供大家参考.具体实现方法如下: 一般来说php中读取目录下的文件名的方式确实不少,最简单的是scandir,具体代码如下: 复制代码 代码如下: $dir="./caxa/"; $file=scandir($dir); print_r($file); 稍微复杂点的,来自于php手册: 复制代码 代码如下: $dir = "/etc/php5/"; // Open a known directory,

PHP读取目录下所有文件的代码

读取目录下所有文件的代码,可以不管文件名 复制代码 代码如下: <?php   $dir = "file"; // Open a known directory, and proceed to read its contents   if (is_dir($dir)) {      if ($dh = opendir($dir)) { while (($file = readdir($dh)) !== false) {          if ($file!=".&qu

php中检查文件或目录是否存在的代码小结

下面是一个简单的检查文件是否存在的实例代码: 复制代码 代码如下: <?php $filename = '/path/to/foo.txt'; if (file_exists($filename)) { echo "The file $filename exists"; } else { echo "The file $filename does not exist"; } ?> 如果文件存在,执行该 PHP 文件的显示结果是: The file C:b

php 遍历显示文件夹下所有目录、所有文件的函数,没有分页的代码

<pre> <?php /********************** 一个简单的目录递归函数 第一种实现办法:用dir返回对象 ***********************/ function tree($directory) { $mydir=dir($directory); echo "<ul>\n"; while($file=$mydir->read()){ if((is_dir("$directory/$file"))

PHP判断文件是否存在、是否可读、目录是否存在的代码

1.案例: 复制代码 代码如下: <?php $file = 'jb51.net.php'; if (is_readable($file) == false) { die('文件不存在或者无法读取'); } else { echo '存在'; } ?> is_readable() 函数判断指定文件名是否可读. 指定的文件或目录存在并且可读,则返回 TRUE 2.案例: 复制代码 代码如下: <?php $filename = 'jb51.net.php'; if (file_exists

PHP chmod 函数与批量修改文件目录权限

语法 chmod(file,mode)参数 描述 file 必需.规定要检查的文件. mode 可选.规定新的权限. mode 参数由 4 个数字组成: 第一个数字永远是 0 第二个数字规定所有者的权限 第二个数字规定所有者所属的用户组的权限 第四个数字规定其他所有人的权限 可能的值(如需设置多个权限,请对下面的数字进行总计): 1 - 执行权限 2 - 写权限 4 - 读权限 来看个简单的实例 复制代码 代码如下: <?php chmod("/somedir/somefile"

php遍历目录与文件夹的多种方法详解

遍历目录或遍历目录下指定类型的文件,这是每一个童鞋在写程序的时候难免会用到的.PHP本身也提供了很多灰常有用的函数,正确地使用它们,不会有错滴.下面就我个人学习过程中的一些总结,希望对想学PHP的童鞋有所帮助.本函数可以列出指定目录下所有的文件(包括子目录下的) 复制代码 代码如下: function getfiles($path){ foreach(scandir($path) as $afile){if($afile=='.'||$afile=='..') continue; if(is_d

PHP中文件读、写、删的操作(PHP中对文件和目录操作)

一:目录操作 首先介绍的是一个从目录读取的函数,opendir(),readdir(),closedir(),使用的时候是先打开文件句柄,而后迭代列出: 复制代码 代码如下: <?php $base_dir = "filelist/"; $fso = opendir($base_dir); echo $base_dir."<hr/>" ; while($flist=readdir($fso)){ echo $flist."<br/&

PHP文件操作实例总结【文件上传、下载、分页】

本文实例讲述了PHP文件操作.分享给大家供大家参考,具体如下: 1.文件上传 上传域: input type="file" 普通文本框(text.password.textarea.radio.checkbox等):通过字节流的形式将数据提交到服务器 文件: 将文件以二进制编码的形式提交过去,实现起来非常简单,只需要在form标签中增加 enctype="multipart/form-data" <!-- 例如 --> <form action=&

Python3.5文件读与写操作经典实例详解

本文实例讲述了Python3.5文件读与写操作.分享给大家供大家参考,具体如下: 1.文件操作的基本流程: (1)打开文件,得到文件句柄并赋值给一个变量 (2)通过句柄对文件进行操作 (3)关闭文件 2.基本操作举例: 现有一个命名为song.txt的文件,里面存放最喜爱的英文歌,内容如下: take me to your heart hiding from the rain and snow 藏身于雨雪之中 trying to forget but i won't let go 努力忘记,但我

javascript 中Cookie读、写与删除操作

 javascript 中Cookie读.写与删除操作 前言: 在这个前端横行的时候,页面之间的交互需要数据的传递,有的数据通过url传参的形式可以很好地解决,但是对于部分需要改变的参数,你如说从页面A到页面B选择数据,然后从页面B将数据再传到页面A(典型的栗子就是收货地址的选择),针对这一块我是通过存储cookie来解决的. 对于cookie的操作我给出了一些简单的封装,当然也借鉴了前辈们经验,自己糅合了一下,对于cookie的操作,无非是读写和删除,我们首先来看一下写的操作,有写才有读,进而

Python中的文件和目录操作实现代码

本文将详细解释这些函数的使用方法.首先,我们介绍Python语言中类似于Windows系统的dir命令的列出文件功能,然后描述如何测试一个文件名对应的是一个标准文件.目录还是链接,以及提取文件大小和日期的方法.之后,我们还将介绍如何删除文件和目录,如何复制和删除文件,以及怎样将一个完整的文件路径分解成目录部分和文件名部分,最后,我们讲解目录的创建,以及如何在目录树中移动目录并处理文件. 一.显示目录内容 当我们想要列出当前目录中所有扩展名为.jpg或.gif的文件的时候,就可以使用glob模块来

node.js中stream流中可读流和可写流的实现与使用方法实例分析

本文实例讲述了node.js中stream流中可读流和可写流的实现与使用方法.分享给大家供大家参考,具体如下: node.js中的流 stream 是处理流式数据的抽象接口.node.js 提供了很多流对象,像http中的request和response,和 process.stdout 都是流的实例. 流可以是 可读的,可写的,或是可读可写的.所有流都是 events 的实例. 一.流的类型 node.js中有四种基本流类型: 1.Writable 可写流 (例:fs.createWriteS

ASP编程入门进阶(十八):FSO组件之文件操作(中)

学会了FSO提取文件值,也学会了将信息输入到文件中,那下面就再来应用应用下. 不知道你有没有这样的习惯:看到一个文件,不自觉的右键选择用记事本打开.呵呵,几乎没有哪个文件是不可以的.所以现在,可以默认所有文件都是文本,只是后缀名不同而已:那么也就是说,现在可以提取任一文件的内容信息.OK,就来想象一下: 1,提取一个文件的路径(采用file按钮进行查找定位)2,将该路径文件打开,并读取所有行3,显示读取的信息 一.viewcode.asp <%Function ShowCode(filename

linux 可执行文件与写操作的同步问题(文件读写操作产生的锁机制)

当一个可执行文件已经为write而open时,此时的可执行文件是不允许被执行的.反过来,一个文件正在执行时,它也是不允许同时被write模式而open的.这个约束很好理解,因为文件执行和文件被写应该需要同步保护,因此内核会保证这种同步.那么内核是如何实现该机制的呢?Inode结点中包含一个数据项,叫做i_writecount,很明显是用于记录文件被写的个数的,用于同步的,其类型也是atomic_t. 内核中有两个我们需要了解的函数,与write操作有关,分别是: 复制代码 代码如下: int g

使用NumPy和pandas对CSV文件进行写操作的实例

数组存储成CSV之类的区隔型文件: 下面代码给随机数生成器指定种子,并生成一个3*4的NumPy数组 将一个数组元素的值设为NaN: In [26]: import numpy as np In [27]: np.random.seed(42) In [28]: a = np.random.randn(3,4) In [29]: a[2][2] = np.nan In [30]: print(a) [[ 0.49671415 -0.1382643 0.64768854 1.52302986] [

详解python中的文件与目录操作

详解python中的文件与目录操作 一 获得当前路径 1.代码1 >>>import os >>>print('Current directory is ',os.getcwd()) Current directory is D:\Python36 2.代码2 如果将上面的脚本写入到文件再运行 Current directory is E:\python\work 二 获得目录的内容 Python代码 >>> os.listdir (os.getcwd