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 相关文章推荐
模板引擎Smarty深入浅出介绍
Dec 06 PHP
如何在PHP程序中防止盗链
Apr 09 PHP
php 全文搜索和替换的实现代码
Jul 29 PHP
PHP 学习路线与时间表
Feb 21 PHP
提高PHP编程效率的53个要点(经验小结)
Sep 04 PHP
php 操作数组(合并,拆分,追加,查找,删除等)
Jul 20 PHP
PHP动态输出JavaScript代码实例
Feb 12 PHP
避免Smarty与CSS语法冲突的方法
Mar 02 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
PHP获取redis里不存在的6位随机数应用示例【设置24小时过时】
Jun 07 PHP
PHP如何通过带尾指针的链表实现'队列'
Oct 22 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
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
php恢复数组的key为数字序列的方法
2015/04/28 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
HR vs CL BO3 第一场 2.13
2021/03/10 DOTA
原生JavaScript实现连连看游戏(附源码)
2013/11/05 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
2014/06/24 Javascript
node.js中的fs.chown方法使用说明
2014/12/16 Javascript
js实现的捐赠管理完整实例
2015/01/20 Javascript
AngularJS使用ngOption实现下拉列表的实例代码
2016/01/23 Javascript
jQuery控制控件文本的长度的操作方法
2016/12/05 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
Vue项目中使用better-scroll实现一个轮播图自动播放功能
2018/12/03 Javascript
Vue函数式组件的应用实例详解
2019/08/30 Javascript
[13:25]VP vs VICI (BO3)
2018/06/07 DOTA
在Python中使用判断语句和循环的教程
2015/04/25 Python
Python高级用法总结
2018/05/26 Python
详解用Python练习画个美队盾牌
2019/03/23 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
从训练好的tensorflow模型中打印训练变量实例
2020/01/20 Python
使用python实现CGI环境搭建过程解析
2020/04/28 Python
Django在Model保存前记录日志实例
2020/05/14 Python
利用python对excel中一列的时间数据更改格式操作
2020/07/14 Python
python 绘制场景热力图的示例
2020/09/23 Python
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
写给保洁员表扬信
2014/01/08 职场文书
公司委托书格式范文
2014/04/04 职场文书
2014年入党积极分子学习三中全会思想汇报
2014/09/13 职场文书
个人委托书范本
2014/09/13 职场文书
个人房屋买卖协议书(范本)
2014/10/04 职场文书
教师批评与自我批评总结
2014/10/16 职场文书
优秀员工推荐材料
2014/12/20 职场文书
幼儿园教学工作总结2015
2015/05/12 职场文书
实习指导老师意见
2015/06/04 职场文书
职工趣味运动会开幕词
2016/03/04 职场文书
详解Oracle数据库中自带的所有表结构(sql代码)
2021/11/20 Oracle