<?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. Unity3D的四种坐标系

    [Unity3D的四种坐标系] 1.World Space(世界坐标):我们在场景中添加物体(如:Cube),他们都是以世界坐标显示在场景中的.transform.position可以获得该位置坐标. ...

  2. myBatis oracle 与mysql自增问题

    mysql <insert id="insert" parameterType="Person" useGeneratedKeys="true& ...

  3. PHP 检测变量是否为空

    PHP 中以下值得计算结果为 false: 关键字 boolean false 整型 integer 0 浮点型 double 0.0 字符串 string ""  字符串 str ...

  4. Public DNS (公共域名解析服务)

    114DNS 服务IP:114.114.114.114, 114.114.115.115 拦截 钓鱼病毒木马网站:114.114.114.119, 114.114.115.119 拦截 色情网站:11 ...

  5. 如何使用Google Map API开发Android地图应用

    两年前开发过的GoogleMap已经大变样,最近有项目要用到GoogleMap,重新来配置Android GoogleMap开发环境,还真是踩了不少坑. 一.下载Android SDK Manager ...

  6. How repair disk issue when "Fsck Failed please repair manually and reboot"

    " Fsck Failed please repair manually and reboot. the root filesystem is currently mounted as re ...

  7. Spark部署三种方式介绍:YARN模式、Standalone模式、HA模式

    参考自:Spark部署三种方式介绍:YARN模式.Standalone模式.HA模式http://www.aboutyun.com/forum.php?mod=viewthread&tid=7 ...

  8. CSS特异性(CSS Specificity)的细节之CSS样式权重的计算与理解(CSS样式覆盖规则)

    本篇讲解CSS特异性(CSS Specificity)的细节,也就是CSS样式选择器的权重计算 通过计算选择器的权重(weight)最终决定哪个选择器将获得优先权去覆盖其他选择器的样式设定,即“优先原 ...

  9. 移动应用抓包调试利器Charles

    转载:http://www.jianshu.com/p/68684780c1b0 一.Charles是什么? Charles是在 Mac或Windows下常用的http协议网络包截取工具,是一款屌的不 ...

  10. kibana 使用

    统计IP前五的数据 统计相应时间 状态码统计 统计IP地图