<?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'移动失败'; ?>

最新文章

  1. Gradle&#39;s dependency cache may be corrupt解决方法
  2. Odoo 8.0 new API 之Environment
  3. cros解决跨域
  4. OpenGL中旋转平移缩放等变换的顺序对模型的影响
  5. [转]Nginx+ThinkPHP不支持PathInfo的解决办法
  6. C#计算程序执行速度
  7. javascript中通过className灵活查找元素 例如我们要把根据class来进行修改样式
  8. Tengine笔记2:通过IP、域名、端口实现虚拟主机
  9. 提供基于Lesktop的IM二次开发,联系QQ:87172811
  10. 狙杀ES6之开光篇
  11. maven项目启动报:java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener 错误解决方法-杜恩德
  12. 【倍增】洛谷P3379 倍增求LCA
  13. 分布式监控系统--zabbix
  14. 用Postman做自动化测试的功能
  15. Linux从入门到进阶全集——【第八集:软件包管理:rpm、tar、yum】
  16. 在线批量将gps经纬度坐标转换为百度经纬度坐标
  17. tiny6410的启动参数
  18. Oracle系统表外键的更名
  19. opencv——对象计数
  20. flask request模块

热门文章

  1. Android四大组件--ContentProvider详解(转)
  2. 《实战Java虚拟机》,最简单的JVM入门书,京东活动,满200就减100了,该出手了
  3. JBoss QuickStart之Helloworld
  4. 用NotePad如何实现大小写转换
  5. 尝试自己翻译了FreeCodeCamp的文章,技术方面多认识了几种技术,文章标题:Transparency in Action Free Code Camp is Now Open Source
  6. 如何添加Tomcat为启动服务
  7. 分布式缓存Memcached---开篇的话
  8. 在 shell 脚本获取 ip、数字转换等网络操作
  9. 添加到SQLAgentReaderRole角色后报拒绝SELECT权限
  10. word嵌入图片部分被段落遮挡