PHP文件操作:遍历文件目录
<?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文件操作:遍历文件目录的更多相关文章
- node.js整理 03文件操作-遍历目录和文本编码
遍历目录 递归算法 遍历目录时一般使用递归算法,否则就难以编写出简洁的代码. 递归算法与数学归纳法类似,通过不断缩小问题的规模来解决问题 function factorial(n) { if (n = ...
- 使用php glob函数查找文件,遍历文件目录(转)
函数说明:array glob ( string $pattern [, int $flags ] )功能:寻找与模式匹配的文件路径,返回包含匹配文件(目录)的数组(注:被检查的文件必须是服务器系统的 ...
- Java 利用FTP上传,下载文件,遍历文件目录
Java实现FTP上传下载文件的工具包有很多,这里我采用Java自带的API,实现FTP上传下载文件.另外JDK1.7以前的版本与其之后版本的API有了较大的改变了. 例如: JDK1.7之前 JDK ...
- ASP.NET中的文件操作(文件信息,新建,移动,复制,重命名,上传,遍历)(亲测详细)
做了几天的文件操作,现在来总结一下,错误之处,还望指点!以文件为例,如果对文件夹操作,基本上将File换为Directory即可(例:FileInfo file = new FileInfo(Path ...
- php文件夹与文件目录操作函数
在php中一些常用的文件夹/文件目录操作函数总结. php文件夹操作函数 string basename ( string path [, string suffix] ) 给出一个包含有指向一个文件 ...
- paip.c++ qt 目录遍历以及文件操作
paip.c++ qt 目录遍历以及文件操作 作者Attilax , EMAIL:1466519819@qq.com 来源:attilax的专栏 地址:http://blog.csdn.net/a ...
- PowerShell~文件操作和对象遍历
ps提供了丰富的文件操作,如建立,删除,改名,移动,复制,文件夹建立,显示文件列表,同时对数组对象的遍历也很方便,如果在使用PS脚本时,希望现时传入参数,可以把参数声明为param,当然需要把它写在文 ...
- C数据结构(文件操作,随机数,排序,栈和队列,图和遍历,最小生成树,最短路径)程序例子
文件操作 文件打开方式 意义 ”r” 只读打开一个文本文件,只允许读数据 ”w” 只写打开或建立一个文本文件,只允许写数据 ”a” 追加打开一个文本 ...
- python文件夹遍历,文件操作,获取文件修改创建时间
在Python中,文件操作主要来自os模块,主要方法如下: os.listdir(dirname):列出dirname下的目录和文件os.getcwd():获得当前工作目录os.curdir:返回当前 ...
- 《Java核心技术卷二》笔记(二)文件操作和内存映射文件
文件操作 上一篇已经总结了流操作,其中也包括文件的读写.文件系统除了读写以为还有很多其他的操作,如复制.移动.删除.目录浏览.属性读写等.在Java7之前,一直使用File类用于文件的操作.Java7 ...
随机推荐
- SQL语法整理
SQL是Structured Query Language的缩写,中文全名为结构化查询语言,是一种用于数据存储,查询,更新和管理的关系数据库系统. SQL语法 创建表 create table tab ...
- shell 条件判断
一.数值判断 INT1 -eq INT2 INT1和INT2两数相等为真 INT1 -ne INT2 INT1和INT2两数不等为真 INT1 -gt INT2 ...
- MySQL 一些查询语句及技巧
生成唯一随机数 # 非补0版本 SELECT FLOOR(100000 + RAND() * 899999) AS random_number FROM target_table WHERE &quo ...
- ncurses库的一些函数
为了实现一个简单的聊天程序,如果使用普通的输入输出函数,会很凌乱.so,便想着能不能用下 ncurses这个字符图形库 总结一下,就是这样. 使用ncurses时,先需要初始化窗口,程序结束时,主动调 ...
- yii2 model层中配置常量与list
- js出错总结
1 没有</script> src="js" "./js" "../js"2 dom对象与jquery对象(jquery对象其 ...
- chm转换为html
在Windows下chm转换为html的超简单方法(反编译CHM文件的方法) 通过调用Windows命令,将chm 文件转换为html 文件. 方法: 命令行(cmd),输入hh -decompile ...
- gmc银联接口开发demo
1.接口文档 1.1 无gmc界面接口 (dll/ocx) dll调用(posinf.dll)函数名为:int bankall (char * request,char *response),其中第一 ...
- ASP.NET MVC 4 Attribute特性
[AcceptVerbs(-)] To specify HTTP verbs an action method will respond to. 要指定HTTP动词的将响应的一个操作方法. [Acti ...
- PDO和消息队列的一点个人理解
什么是消息队列,百度百科说,···消息队列····是在消息的传输过程中保存消息的容器. 看着网上林林总总的文章,都说是为了应对高并发,处理数据量超级大的一种数据容器,也可以说是利用各种方式,先把数据存 ...