| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | <?php/** * Created by PhpStorm. * User: Administrator * Date: 2022/8/10 * Time: 18:39 */namespace file;class DirHelper{    /**     * 创建多级目录     * @param $path [目录路径]     * @return bool     */    public static function makeDir($path)    {        if (!file_exists($path)) {//不存在则建立            $mk = @mkdir($path, 0777, true); //权限            @chmod($path, 0777);        }        return true;    }    /**     * 不经过回收站,递归删除文件夹(本机测试时请慎用)     * @param $dir [目录路径]     */    public static function delDir($dir)    {        if (file_exists($dir)) {            $mydir = dir($dir);            while (false !== ($file = $mydir->read())) {                if ($file != "." && $file != "..") {                    $path = $dir . DS . $file;                    is_dir($path) ? self::delDir($path) : @unlink($path);                }            }            $mydir->close();            @rmdir($dir);        }    }    /**     * 复制目录     * @param $source [源目录路径]     * @param $dest [目标目录路径]     * @param $cover [拷贝并覆盖同名文件]     */    public static function copyDir($source, $dest, $cover = true)    {        if (!file_exists($dest)) self::makeDir($dest);        $handle = opendir($source);        while (($item = readdir($handle)) !== false) {            if ($item == '.' || $item == '..') continue;            $_source = $source . DS . $item;            $_dest = $dest . DS . $item;            if (is_dir($_source)) {                self::copyDir($_source, $_dest, $cover);            } else if (is_file($_source)) {                if ($cover || (!$cover && !file_exists($_dest))) {                    copy($_source, $_dest);                }            }        }        closedir($handle);    }    /**     * 读取出一个文件夹及其子文件夹下所有文件     * @param $path     * @return array|mixed|string     */    public static function scanDirs($path)    {        global $result;        $files = scandir($path);        foreach ($files as $file) {            if ($file != '.' && $file != '..') {                if (is_dir($path . '/' . $file)) {                    $result[] = $path . '/' . $file;                    self::scanDirs($path . '/' . $file);                } else {                    $result[] = $path . '/' . $file;                }            }        }        return $result;    }}
 |