PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)


Posted in PHP onNovember 10, 2011
<? 
/** 
* 操纵文件类 
* 
* 例子: 
* FileUtil::createDir('a/1/2/3'); 测试建立文件夹 建一个a/1/2/3文件夹 
* FileUtil::createFile('b/1/2/3'); 测试建立文件 在b/1/2/文件夹下面建一个3文件 
* FileUtil::createFile('b/1/2/3.exe'); 测试建立文件 在b/1/2/文件夹下面建一个3.exe文件 
* FileUtil::copyDir('b','d/e'); 测试复制文件夹 建立一个d/e文件夹,把b文件夹下的内容复制进去 
* FileUtil::copyFile('b/1/2/3.exe','b/b/3.exe'); 测试复制文件 建立一个b/b文件夹,并把b/1/2文件夹中的3.exe文件复制进去 
* FileUtil::moveDir('a/','b/c'); 测试移动文件夹 建立一个b/c文件夹,并把a文件夹下的内容移动进去,并删除a文件夹 
* FileUtil::moveFile('b/1/2/3.exe','b/d/3.exe'); 测试移动文件 建立一个b/d文件夹,并把b/1/2中的3.exe移动进去 
* FileUtil::unlinkFile('b/d/3.exe'); 测试删除文件 删除b/d/3.exe文件 
* FileUtil::unlinkDir('d'); 测试删除文件夹 删除d文件夹 
*/ 
class FileUtil { 
/** 
* 建立文件夹 
* 
* @param string $aimUrl 
* @return viod 
*/ 
function createDir($aimUrl) { 
$aimUrl = str_replace('', '/', $aimUrl); 
$aimDir = ''; 
$arr = explode('/', $aimUrl); 
foreach ($arr as $str) { 
$aimDir .= $str . '/'; 
if (!file_exists($aimDir)) { 
mkdir($aimDir); 
} 
} 
} 
/** 
* 建立文件 
* 
* @param string $aimUrl 
* @param boolean $overWrite 该参数控制是否覆盖原文件 
* @return boolean 
*/ 
function createFile($aimUrl, $overWrite = false) { 
if (file_exists($aimUrl) && $overWrite == false) { 
return false; 
} elseif (file_exists($aimUrl) && $overWrite == true) { 
FileUtil::unlinkFile($aimUrl); 
} 
$aimDir = dirname($aimUrl); 
FileUtil::createDir($aimDir); 
touch($aimUrl); 
return true; 
} 
/** 
* 移动文件夹 
* 
* @param string $oldDir 
* @param string $aimDir 
* @param boolean $overWrite 该参数控制是否覆盖原文件 
* @return boolean 
*/ 
function moveDir($oldDir, $aimDir, $overWrite = false) { 
$aimDir = str_replace('', '/', $aimDir); 
$aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir . '/'; 
$oldDir = str_replace('', '/', $oldDir); 
$oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir . '/'; 
if (!is_dir($oldDir)) { 
return false; 
} 
if (!file_exists($aimDir)) { 
FileUtil::createDir($aimDir); 
} 
@$dirHandle = opendir($oldDir); 
if (!$dirHandle) { 
return false; 
} 
while(false !== ($file = readdir($dirHandle))) { 
if ($file == '.' || $file == '..') { 
continue; 
} 
if (!is_dir($oldDir.$file)) { 
FileUtil::moveFile($oldDir . $file, $aimDir . $file, $overWrite); 
} else { 
FileUtil::moveDir($oldDir . $file, $aimDir . $file, $overWrite); 
} 
} 
closedir($dirHandle); 
return rmdir($oldDir); 
} 
/** 
* 移动文件 
* 
* @param string $fileUrl 
* @param string $aimUrl 
* @param boolean $overWrite 该参数控制是否覆盖原文件 
* @return boolean 
*/ 
function moveFile($fileUrl, $aimUrl, $overWrite = false) { 
if (!file_exists($fileUrl)) { 
return false; 
} 
if (file_exists($aimUrl) && $overWrite = false) { 
return false; 
} elseif (file_exists($aimUrl) && $overWrite = true) { 
FileUtil::unlinkFile($aimUrl); 
} 
$aimDir = dirname($aimUrl); 
FileUtil::createDir($aimDir); 
rename($fileUrl, $aimUrl); 
return true; 
} 
/** 
* 删除文件夹 
* 
* @param string $aimDir 
* @return boolean 
*/ 
function unlinkDir($aimDir) { 
$aimDir = str_replace('', '/', $aimDir); 
$aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/'; 
if (!is_dir($aimDir)) { 
return false; 
} 
$dirHandle = opendir($aimDir); 
while(false !== ($file = readdir($dirHandle))) { 
if ($file == '.' || $file == '..') { 
continue; 
} 
if (!is_dir($aimDir.$file)) { 
FileUtil::unlinkFile($aimDir . $file); 
} else { 
FileUtil::unlinkDir($aimDir . $file); 
} 
} 
closedir($dirHandle); 
return rmdir($aimDir); 
} 
/** 
* 删除文件 
* 
* @param string $aimUrl 
* @return boolean 
*/ 
function unlinkFile($aimUrl) { 
if (file_exists($aimUrl)) { 
unlink($aimUrl); 
return true; 
} else { 
return false; 
} 
} 
/** 
* 复制文件夹 
* 
* @param string $oldDir 
* @param string $aimDir 
* @param boolean $overWrite 该参数控制是否覆盖原文件 
* @return boolean 
*/ 
function copyDir($oldDir, $aimDir, $overWrite = false) { 
$aimDir = str_replace('', '/', $aimDir); 
$aimDir = substr($aimDir, -1) == '/' ? $aimDir : $aimDir.'/'; 
$oldDir = str_replace('', '/', $oldDir); 
$oldDir = substr($oldDir, -1) == '/' ? $oldDir : $oldDir.'/'; 
if (!is_dir($oldDir)) { 
return false; 
} 
if (!file_exists($aimDir)) { 
FileUtil::createDir($aimDir); 
} 
$dirHandle = opendir($oldDir); 
while(false !== ($file = readdir($dirHandle))) { 
if ($file == '.' || $file == '..') { 
continue; 
} 
if (!is_dir($oldDir . $file)) { 
FileUtil::copyFile($oldDir . $file, $aimDir . $file, $overWrite); 
} else { 
FileUtil::copyDir($oldDir . $file, $aimDir . $file, $overWrite); 
} 
} 
return closedir($dirHandle); 
} 
/** 
* 复制文件 
* 
* @param string $fileUrl 
* @param string $aimUrl 
* @param boolean $overWrite 该参数控制是否覆盖原文件 
* @return boolean 
*/ 
function copyFile($fileUrl, $aimUrl, $overWrite = false) { 
if (!file_exists($fileUrl)) { 
return false; 
} 
if (file_exists($aimUrl) && $overWrite == false) { 
return false; 
} elseif (file_exists($aimUrl) && $overWrite == true) { 
FileUtil::unlinkFile($aimUrl); 
} 
$aimDir = dirname($aimUrl); 
FileUtil::createDir($aimDir); 
copy($fileUrl, $aimUrl); 
return true; 
} 
} 
?>

另一种调用方式:
$fu = new FileUtil(); 
$fu->copyFile('a/1/2/3', 'a/1/2/4');
PHP 相关文章推荐
MySQL相关说明
Jan 15 PHP
在字符串指定位置插入一段字符串的php代码
Feb 16 PHP
fleaphp crud操作之findByField函数的使用方法
Apr 23 PHP
使用 PHPMAILER 发送邮件实例应用
Nov 07 PHP
如何使用PHP实现javascript的escape和unescape函数
Jun 29 PHP
php实现的获取网站备案信息查询代码(360)
Sep 23 PHP
迁移PHP版本到PHP7
Feb 06 PHP
php生成圆角图片的方法
Apr 07 PHP
PHP脚本自动识别验证码查询汽车违章
Dec 20 PHP
PHP基于GD2函数库实现验证码功能示例
Jan 27 PHP
PHP实现笛卡尔积算法的实例讲解
Dec 22 PHP
解决php用mysql方式连接数据库出现Deprecated报错问题
Dec 25 PHP
php 转换字符串编码 iconv与mb_convert_encoding的区别说明
Nov 10 #PHP
PHP mb_convert_encoding文字编码的转换函数介绍
Nov 10 #PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
Nov 10 #PHP
PHP中其实也可以用方法链
Nov 10 #PHP
PHP容易被忽略而出错陷阱 数字与字符串比较
Nov 10 #PHP
PHP及Zend Engine的线程安全模型分析
Nov 10 #PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
Nov 09 #PHP
You might like
symfony2.4的twig中date用法分析
2016/03/18 PHP
PHP调用存储过程返回值不一致问题的解决方法分析
2016/04/26 PHP
PHP使用pdo实现事务处理操作示例
2018/09/05 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
2019/05/09 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
Javascript异步编程的4种方法让你写出更出色的程序
2013/01/17 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
设置checkbox为只读(readOnly)的两种方式
2013/10/11 Javascript
jQuery实现鼠标可拖动调整表格列宽度
2014/05/26 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
jQuery不使用插件及swf实现无刷新文件上传
2014/12/08 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
VueJS全面解析
2016/11/10 Javascript
实例详解display:none与visible:hidden的区别
2017/03/30 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
vue配置请求本地json数据的方法
2018/04/11 Javascript
从0到1构建vueSSR项目之路由的构建
2019/03/07 Javascript
使用Angular material主题定义自己的组件库的配色体系
2019/09/04 Javascript
python文件写入实例分析
2015/04/08 Python
Python实现telnet服务器的方法
2015/07/10 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
python3+PyQt5实现自定义窗口部件Counters
2018/04/20 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
python使用tomorrow实现多线程的例子
2019/07/20 Python
Python  Django 母版和继承解析
2019/08/09 Python
python web框架Flask实现图形验证码及验证码的动态刷新实例
2019/10/14 Python
python list多级排序知识点总结
2019/10/23 Python
Python中logger日志模块详解
2020/08/04 Python
体育教师自我鉴定
2014/02/12 职场文书
电脑售后服务承诺书
2014/03/27 职场文书
起诉离婚协议书样本
2014/11/25 职场文书
村干部任职承诺书
2015/01/21 职场文书
二婚主持词
2015/06/30 职场文书
2016年乡镇七一建党节活动总结
2016/04/05 职场文书
python numpy中setdiff1d的用法说明
2021/04/22 Python