PHP文件及文件夹操作之创建、删除、移动、复制
程序员文章站
2024-04-02 16:14:52
创建fileutil.php文件,内容及调用方式如下:
创建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文件及文件夹操作之创建、删除、移动、复制,希望对大家有所帮助
上一篇: ucenter中词语过滤原理分析
下一篇: PHP中类属性与类静态变量的访问方法示例