<?php
/*遍历目录,列出目录中的文件
* array scandir(string $directory [,int $sorting_order])
* $directory为待遍历目录的路径名,$sorting_order为可选参数,设置文件的降序或者升序排列
* */
$path='./'; //为当前目录
if(file_exists($path)){
$files_asc=scandir($path);
$files_desc=scandir($path,1); echo '<p>该目录下的文件(升序排列):<br>';
print_r($files_asc);
echo '<p>该目录下的文件(降序排序):<br>';
print_r($files_desc);
}
else{
echo'该目录不存在!';
} /*递归的遍历所在目录及其所有子目录,即所谓的遍历目录树*/
/*
* 递归函数
* 遍历目录树
* 输入参数:目录路径
* 输出结果:多维数组表示的目录树
* */
function GetDirFree($path){
$tree = array();
$tmp = array(); if(!is_dir($path)) return null; //如果不是路径则返回null $files = scandir($path); //列出当前目录下的所有文件和目录 foreach($files as $value){
if($value=='.'||$value=='..') //跳过当前的目录名和父目录名
continue; $full_path = $path.'/'.$value; //获取子文件或目录的完整路径
if(is_dir($full_path)){
$tree[$value]=GetDirFree($full_path);
}
else{
$tmp[]=$value;
}
}
//将文件添加到结果数组末尾
$tree = array_merge($tree,$tmp);
return $tree;
}
//$path='./';
echo '<br>'.'递归遍历目录及其子目录';
print_r(GetDirFree($path)); /*复制、移动目录*/
/*递归函数
* 复制目录
* 输入参数:源目录路径,目的目录路径
* 输出目录;复制成功则返回TRUE,否则返回false*/ function copyDir($source_path,$dest_path){
if(!is_dir($source_path)){ //如果不是路径则返回false
return false;
}
if(!file_exists($dest_path)){ //如果不存在目录则创建目录
if(!mkdir($dest_path)) return false;
} $files=scandir($source_path);
foreach($files as $value){
if($value=='.'||$value=='..') continue; //跳过当前的目录名和父目录名 $child_source_path=$source_path.'/'.$value; //获取子文件或目录的完整路径 $child_dest_path=$dest_path.'/'.$value; if(is_dir($child_source_path)){ //如果存在子目录,则复制子目录
if(!copyDir($source_path, $dest_path)){
return false;
}
}
else {
if(!copy($child_source_path,$child_dest_path)){
return false; //复制子文件
}
}
} return true;
} $source_path='./test_dir';
$dest_path='./copy_test_dir';
$result=copyDir($source_path, $dest_path);
if($result) echo '目录复制成功';
else echo '目录复制失败'; /*递归删除目录
* 删除目录内容
* 输入参数:目录路径
* 输出结果:删除成功则返回true,否则返回false
* */
function delDir($path){
if(!is_dir($path)) return false;
if(!file_exists($path)) return false; $files=scandir($path);
foreach($files as $value){
if($value=='.'||$value=='..') continue; $child_path=$path.'/'.$value;
if(is_dir($child_path)){
if(!delDir($child_path)){
return false;
}
}
else{
if(!unlink($child_path)){
return false;
}
}
}
if(!rmdir($path)) return false;
return true;
}
$path='./copy_test_dir';
$result=delDir($path);
if($result) echo'目录删除成功';
else echo'目录删除失败'; /*移动目录,是复制目录和删除目录的结合
* 递归函数
* 移动目录内容
* 输入参数:原目录路径,目的目录路径
* 输出结果:移动成功则返回true,反正返回false
* 使用copydir()函数和deldir()函数*/
function moveDir($source_path,$dest_path){
if(!copyDir($source_path, $dest_path)) return false;
if(!delDir($source_path)) return false;
return true;
} $source_path='./test_dir';
$dest_path='./move_test_dir';
$result=moveDir($source_path, $dest_path);
if($result) echo '目录移动成功!';
else echo'移动失败'; ?>

PHP文件操作:遍历文件目录的更多相关文章

  1. node.js整理 03文件操作-遍历目录和文本编码

    遍历目录 递归算法 遍历目录时一般使用递归算法,否则就难以编写出简洁的代码. 递归算法与数学归纳法类似,通过不断缩小问题的规模来解决问题 function factorial(n) { if (n = ...

  2. 使用php glob函数查找文件,遍历文件目录(转)

    函数说明:array glob ( string $pattern [, int $flags ] )功能:寻找与模式匹配的文件路径,返回包含匹配文件(目录)的数组(注:被检查的文件必须是服务器系统的 ...

  3. Java 利用FTP上传,下载文件,遍历文件目录

    Java实现FTP上传下载文件的工具包有很多,这里我采用Java自带的API,实现FTP上传下载文件.另外JDK1.7以前的版本与其之后版本的API有了较大的改变了. 例如: JDK1.7之前 JDK ...

  4. ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)

    做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path ...

  5. php文件夹与文件目录操作函数

    在php中一些常用的文件夹/文件目录操作函数总结. php文件夹操作函数 string basename ( string path [, string suffix] ) 给出一个包含有指向一个文件 ...

  6. paip.c++ qt 目录遍历以及文件操作

    paip.c++ qt 目录遍历以及文件操作 作者Attilax ,  EMAIL:1466519819@qq.com  来源:attilax的专栏 地址:http://blog.csdn.net/a ...

  7. PowerShell~文件操作和对象遍历

    ps提供了丰富的文件操作,如建立,删除,改名,移动,复制,文件夹建立,显示文件列表,同时对数组对象的遍历也很方便,如果在使用PS脚本时,希望现时传入参数,可以把参数声明为param,当然需要把它写在文 ...

  8. C数据结构(文件操作,随机数,排序,栈和队列,图和遍历,最小生成树,最短路径)程序例子

    文件操作 文件打开方式               意义     ”r” 只读打开一个文本文件,只允许读数据     ”w” 只写打开或建立一个文本文件,只允许写数据     ”a” 追加打开一个文本 ...

  9. python文件夹遍历,文件操作,获取文件修改创建时间

    在Python中,文件操作主要来自os模块,主要方法如下: os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回当前 ...

  10. 《Java核心技术卷二》笔记(二)文件操作和内存映射文件

    文件操作 上一篇已经总结了流操作,其中也包括文件的读写.文件系统除了读写以为还有很多其他的操作,如复制.移动.删除.目录浏览.属性读写等.在Java7之前,一直使用File类用于文件的操作.Java7 ...

随机推荐

  1. 利用css3制作的几个loading图

    先看图,多数是从别人那里看的效果直接仿的,先开随笔,有了创意继续加 其实3个之后,脑子里立刻有个第四个的制作思路,无外乎是利用border或者块元素变形,然后构思好接下来的行为,写起来也非常简单,5个 ...

  2. PHP 两个多维数组根据某个键的值进行组合排序的几种思路(二)

    几个经过封装的方法: 1.使用 array_multisort() 函数 <?php $arr = [ ['name'=>'dee','age'=>28], ['name'=> ...

  3. .net core 1.0 中的asp.net identity 基本使用(一)

    1.修改密码强度:打开Startup.cs,在public class Startup{}内找public void ConfigureServices(IServiceCollection serv ...

  4. cocos2dx中的ScrollView

    ScrollView由视窗区域(裁剪区域)和内容区域组成,内容区域叫innerContainer. 视窗区域范围:get/setContentSize 内容区域:get/setInnerContain ...

  5. HTML5 history新特性pushState、replaceState

    DOM中的window对象通过window.history方法提供了对浏览器历史记录的读取,让你可以在用户的访问记录中前进和后退. 从HTML5开始,我们可以开始操作这个历史记录堆栈. 1.Histo ...

  6. 【Html 学习笔记】第二节——文本格式

    上一节基本已经了解了一些html的基础,这一节主要学习html处理文本相关内容,直接看内容吧. 字体: 预格式文本:<pre> 地址:<address> 缩写:<abbr ...

  7. Oracle 遇到的问题 (1)

    1.ORA-01502:索引'DBEPMS.SYS_C009390'或这类索引的分区处于不可用状态 解决方法:[注 索引命名规则 IX_表名简称_列名简称/IX_表名简称_序号(索引长度在30字符以内 ...

  8. Ubuntu server12.04安装JDK+Tomcat+mysql

    一.安装JDK 1.首先到官网上下载jdk-7u79-linux-x64.tar.gz. 2.将jdk-7u79-linux-x64.tar.gz拷贝到/usr/lib/jdk/目录下面,这里如果没有 ...

  9. Ionic- Android 开发环境搭建

    Ionic- Android 开发环境搭建 为时一周的IONIC ADNROID 环境终于在各种处理错误中搭建成功,以下记录下搭建过程中遇到的各种情况的处理办法. 一 首先,当然是enviroment ...

  10. NSSet

    版权声明:本文为博主原创文章,未经博主允许不得转载. 一.NSSet的创建和初始化 创建一个空的NSSet集合:+ (void)set; 用数组来创建NSSet集合:+ (id)setWithArra ...