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 相关文章推荐
phpmyadmin导入(import)文件限制的解决办法
Dec 11 PHP
PHP5中使用DOM控制XML实现代码
May 07 PHP
在PHP中实现Javascript的escape()函数代码
Aug 08 PHP
探讨捕获php错误信息方法的详解
Jun 09 PHP
php去除html标记的原生函数详解
Jan 27 PHP
刷新PHP缓冲区为你的站点加速
Oct 10 PHP
php时间计算相关问题小结
May 09 PHP
Ubuntu server 11.04安装memcache及php使用memcache来存储session的方法
May 31 PHP
php实现的网页版剪刀石头布游戏示例
Nov 25 PHP
PHP面向对象多态性实现方法简单示例
Sep 27 PHP
PHP设计模式之工厂模式详解
Oct 24 PHP
php中目录操作opendir()、readdir()及scandir()用法示例
Jun 08 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.MVC的模板标签系统(一)
2006/09/05 PHP
PHP生成二维码的两个方法和实例
2014/07/01 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
javascript 文章截取部分无损html显示实现代码
2010/05/04 Javascript
7款吸引人眼球的jQuery/CSS3特效实例分享
2013/04/25 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
在AngularJS应用中实现一些动画效果的代码
2015/06/18 Javascript
基于Jquery+div+css实现弹出登录窗口(代码超简单)
2015/10/27 Javascript
javascript动态生成树形菜单的方法
2015/11/14 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
Javascript 引擎工作机制详解
2016/11/30 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
angular.extend方法的具体使用
2017/09/14 Javascript
基于JavaScript实现前端数据多条件筛选功能
2020/08/19 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
JS canvas绘制五子棋的棋盘
2020/05/28 Javascript
针对Vue路由history模式下Nginx后台配置操作
2020/10/22 Javascript
python进阶教程之循环对象
2014/08/30 Python
用Python计算三角函数之acos()方法的使用
2015/05/15 Python
Python解析树及树的遍历
2016/02/03 Python
Python3使用requests包抓取并保存网页源码的方法
2016/03/15 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
django Admin文档生成器使用详解
2019/07/22 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
巴西购物网站:Onofre Agora
2020/06/08 全球购物
图书室管理制度
2014/01/19 职场文书
小学三年级学生评语
2014/04/22 职场文书
广播节目策划方案
2014/05/23 职场文书
纺织工程专业推荐信
2014/09/08 职场文书
2014年办公室个人工作总结
2014/11/12 职场文书
销售员岗位职责
2015/02/10 职场文书
教你nginx跳转配置的四种方式
2022/07/07 Servers