PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)

 更新时间:2011年11月10日 16:34:48   作者:  
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);
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 fread读取文件注意事项

    php fread读取文件注意事项

    php fread函数用于从文件中读取一定长度的字符,本文章向大家介绍fread读取文件的实例以及使用该函数读取文件需要注意的几个地方,需要的朋友可以参考一下。
    2016-09-09
  • php解决和避免form表单重复提交的几种方法

    php解决和避免form表单重复提交的几种方法

    在PHP提交表单的时候,可能遇到网速等导致页面突然加载变慢,用户重复地点击提交按钮,将在数据库产生多条数据,导致不可控情况。那么如何避免和解决这种问题呢?下面来一起看看。
    2016-08-08
  • PHP基于DOMDocument解析和生成xml的方法分析

    PHP基于DOMDocument解析和生成xml的方法分析

    这篇文章主要介绍了PHP基于DOMDocument解析和生成xml的方法,结合具体实例形式分析了php使用DOMDocument解析xml节点及xml文件生成的各种常用操作技巧,需要的朋友可以参考下
    2017-07-07
  • php使用gd2绘制基本图形示例(直线、圆、正方形)

    php使用gd2绘制基本图形示例(直线、圆、正方形)

    这篇文章主要介绍了php使用gd2绘制基本图形,包括直线、圆、正方形等图形的绘制技巧,需要的朋友可以参考下
    2017-02-02
  • php array_slice函数的使用以及参数详解

    php array_slice函数的使用以及参数详解

    array array_slice ( array array, int offset [, int length]),根据 offset 和 length 参数所指定的 array 数组中的一段序列。offset 表示开始位置,length表示这段序列的长度.
    2008-08-08
  • PHP使用pear自带的mail类库发邮件的方法

    PHP使用pear自带的mail类库发邮件的方法

    这篇文章主要介绍了PHP使用pear自带的mail类库发邮件的方法,实例分析了pear的安装及mail类发送邮件的实现技巧,非常简单实用,需要的朋友可以参考下
    2015-07-07
  • PHP依赖注入(DI)和控制反转(IoC)详解

    PHP依赖注入(DI)和控制反转(IoC)详解

    这篇文章主要介绍了PHP依赖注入(DI)和控制反转(IoC)的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • php Imagick获取图片RGB颜色值

    php Imagick获取图片RGB颜色值

    根据用户上传的图片检索出图片的主要颜色值,再根据颜色搜索相关的图片,使用Imagick的quantizeImage方法能够很方便的取到图片中平均的RGB值
    2014-07-07
  • php往mysql中批量插入数据实例教程

    php往mysql中批量插入数据实例教程

    这篇文章主要给大家介绍了关于php往mysql中批量插入数据的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起看看吧
    2018-12-12
  • php使用ffmpeg获取视频信息并截图的实现方法

    php使用ffmpeg获取视频信息并截图的实现方法

    这篇文章主要介绍了php使用ffmpeg获取视频信息并截图的实现方法,实例分析了php操作视频与图像的相关技巧,需要的朋友可以参考下
    2016-05-05

最新评论