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

jopen 5年前

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 {                    /**       <h5><span style="white-space:pre">  </span>* 建立文件夹</h5>     * @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;            }                    /**       <h5>     * 建立文件</h5>     *            * @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;            }                    /**       <h5>     * 移动文件夹</h5>     *            * @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);            }                    /**       <h5>     * 移动文件</h5>     *            * @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;            }                    /**       <h5>     * 删除文件夹</h5>     *            * @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);            }                    /**       <h5>     * 删除文件</h5>     *            * @param string $aimUrl            * @return boolean            */            function unlinkFile($aimUrl) {                if (file_exists($aimUrl)) {                    unlink($aimUrl);                    return true;                } else {                    return false;                }            }                    /**       <h5>     * 复制文件夹</h5>     *            * @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);            }                    /**       <h5>     * 复制文件</h5>     *            * @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');