PHP文件及文件夹操作之创建、删除、移动、复制


Posted in PHP onJuly 13, 2016

创建FileUtil.php文件,内容及调用方式如下:

<?php
/**
* 操纵文件类
* 
* 例子:
* 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);
$result = true;
foreach ($arr as $str) {
$aimDir .= $str . '/';
if (!file_exists($aimDir)) {
$result = mkdir($aimDir);
}
}
return $result;
}
/**
* 建立文件
*
* @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文件及文件夹操作之创建、删除、移动、复制,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

PHP 相关文章推荐
php jquery 实现新闻标签分类与无刷新分页
Dec 18 PHP
用php或asp创建网页桌面快捷方式的代码
Mar 23 PHP
php邮件发送,php发送邮件的类
Mar 24 PHP
PHP 时间日期操作实战
Aug 26 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
带密匙的php加密解密示例分享
Jan 29 PHP
PHP实现利用MySQL保存session的方法
Aug 23 PHP
php实现的css文件背景图片下载器代码
Nov 11 PHP
thinkphp3.2.2前后台公用类架构问题分析
Nov 25 PHP
PHP中如何防止外部恶意提交调用ajax接口
Apr 11 PHP
PHP receiveMail实现收邮件功能
Apr 25 PHP
php基于PDO连接MSSQL示例DEMO
Jul 13 #PHP
Yii隐藏URL中index.php的方法
Jul 12 #PHP
zen cart实现订单中增加paypal中预留电话的方法
Jul 12 #PHP
Yii CGridView用法实例详解
Jul 12 #PHP
Yii视图CGridView列表用法实例分析
Jul 12 #PHP
微信支付开发动态链接Native支付
Jul 12 #PHP
Yii中CGridView禁止列排序的设置方法
Jul 12 #PHP
You might like
在CentOS上搭建LAMP+vsftpd环境的简单指南
2015/08/01 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
js图片闪动特效可以控制间隔时间如几分钟闪动一下
2014/08/12 Javascript
jQuery 处理页面的事件详解
2015/01/20 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
基于socket.io+express实现多房间聊天
2016/03/17 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
ES6知识点整理之Proxy的应用实例详解
2019/04/16 Javascript
详解Vue项目中实现锚点定位
2019/04/24 Javascript
解决cordova+vue 项目打包成APK应用遇到的问题
2019/05/10 Javascript
JS箭头函数和常规函数之间的区别实例分析【 5 个区别】
2020/05/27 Javascript
[42:32]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.27
2020/12/01 DOTA
Python中DJANGO简单测试实例
2015/05/11 Python
Python命令行解析模块详解
2018/02/01 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
2018/05/24 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
浅谈python编译pyc工程--导包问题解决
2019/03/20 Python
Python基于Dlib的人脸识别系统的实现
2020/02/26 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
使用python脚本自动生成K8S-YAML的方法示例
2020/07/12 Python
Python爬虫开发与项目实战
2020/12/16 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
pandas按条件筛选数据的实现
2021/02/20 Python
老生常谈CSS中的长度单位
2016/06/27 HTML / CSS
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
留学自荐信的技巧
2013/10/17 职场文书
大学社团活动策划书
2014/01/26 职场文书
学习党的群众路线实践活动思想汇报
2014/09/12 职场文书
党的群众路线教育实践活动剖析材料
2014/09/30 职场文书
北京故宫的导游词
2015/01/31 职场文书
小学三年级语文教学反思
2016/03/03 职场文书
职工的安全责任书范文!
2019/07/02 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
详解Html5项目适配系统深色模式方案总结
2021/04/14 HTML / CSS
Python正则表达式中flags参数的实例详解
2022/04/01 Python