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 获取MSN好友列表的代码(2009-05-14测试通过)
Sep 09 PHP
php利用新浪接口查询ip获取地理位置示例
Jan 20 PHP
php环境无法上传文件的解决方法
Apr 30 PHP
php中实现精确设置session过期时间的方法
Jul 17 PHP
PHP中echo和print的区别
Aug 28 PHP
通过php删除xml文档内容的方法
Jan 23 PHP
php继承中方法重载(覆盖)的应用场合
Feb 09 PHP
php删除一个路径下的所有文件夹和文件的方法
Feb 07 PHP
详解php伪造Referer请求反盗链资源
Jan 24 PHP
laravel5.1框架model类查询的实现方法
Oct 08 PHP
php实现根据身份证获取精准年龄
Feb 26 PHP
php+websocket 实现的聊天室功能详解
May 27 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
php统计文件大小,以GB、MB、KB、B输出
2011/05/29 PHP
基于wordpress主题制作的具体实现步骤
2013/05/10 PHP
php遍历目录与文件夹的多种方法详解
2013/11/14 PHP
PHP命名空间(Namespace)简明教程
2014/06/11 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
2015/03/23 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
jQuery中prepend()方法使用详解
2015/08/11 Javascript
jQuery实现带有上下控制按钮的简单多行滚屏效果代码
2015/09/04 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
JavaScript编码风格指南(中文版)
2016/08/26 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
2017/05/01 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
js实现web调用摄像头 js截取视频画面
2019/04/21 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
axios实现简单文件上传功能
2019/09/25 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
[01:02:25]2014 DOTA2华西杯精英邀请赛 5 24 iG VS DK
2014/05/26 DOTA
Python抓取Discuz!用户名脚本代码
2013/12/30 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
Python简单实现查找一个字符串中最长不重复子串的方法
2018/03/26 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
python+flask实现API的方法
2018/11/21 Python
基于Django静态资源部署404的解决方法
2019/07/28 Python
python opencv实现信用卡的数字识别
2020/01/12 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
Python绘图实现台风路径可视化代码实例
2020/10/23 Python
英国街头品牌:Bee Inspired Clothing
2018/02/12 全球购物
军训鉴定表自我鉴定
2014/02/13 职场文书
如何写一封打动人心的求职信
2014/02/17 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
经典哲理警句:志不真则心不热,心不热则功不贤
2019/11/14 职场文书
使用css样式设计一个简单的html登陆界面的实现
2021/03/30 HTML / CSS
Python学习之异常中的finally使用详解
2022/03/16 Python