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 相关文章推荐
基于mysql的论坛(7)
Oct 09 PHP
ajax php 实现写入数据库
Sep 02 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
Nov 01 PHP
PHP冒泡排序算法代码详细解读
Jul 17 PHP
在smarty中调用php内置函数的方法
Feb 07 PHP
php empty()与isset()区别的详细介绍
Jun 17 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
Dec 18 PHP
crontab无法执行php的解决方法
Jan 25 PHP
php强制下载文件函数
Aug 24 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
浅谈laravel orm 中的一对多关系 hasMany
Oct 21 PHP
浅谈laravel aliases别名的原理
Oct 24 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
php4与php5的区别小结(配置异同)
2011/12/20 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
url地址自动加#号问题说明
2010/08/21 Javascript
jQuery遍历Form示例代码
2013/09/03 Javascript
Jquery attr(&quot;checked&quot;) 返回checked或undefined 获取选中失效
2013/10/10 Javascript
jQuery中insertBefore()方法用法实例
2015/01/08 Javascript
jQuery插件实现控制网页元素动态居中显示
2015/03/24 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
JS返回只包含数字类型的数组实例分析
2016/12/16 Javascript
Json按某个键的值进行排序
2016/12/22 Javascript
node通过express搭建自己的服务器
2017/09/30 Javascript
Vue官网todoMVC示例代码
2018/01/29 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
总结4个方面优化Vue项目
2019/02/11 Javascript
javascript中call,apply,callee,caller用法实例分析
2019/07/24 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
vue使用echarts图表自适应的几种解决方案
2020/12/04 Vue.js
[44:04]OG vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python实现的矩阵类实例
2017/08/22 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
浅谈tensorflow 中tf.concat()的使用
2020/02/07 Python
Python reques接口测试框架实现代码
2020/07/28 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
Clarins娇韵诗英国官网:来自法国的天然护肤品牌
2017/04/18 全球购物
股东协议书范本
2014/04/14 职场文书
新郎新娘答谢词
2015/01/04 职场文书
云台山导游词
2015/02/03 职场文书
工程部岗位职责
2015/02/10 职场文书
办公室年度工作总结2015
2015/05/21 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
关于办理居住证的介绍信模板
2019/11/27 职场文书
Java数组与堆栈相关知识总结
2021/06/29 Java/Android
ajax请求前端跨域问题原因及解决方案
2021/10/16 Javascript
Python中time标准库的使用教程
2022/04/13 Python
Java工作中实用的代码优化技巧分享
2022/04/21 Java/Android