php 实现 从一个目录中 把指定类型文件 重新组装到新的目录

为什么要做这个功能

自己从网上下载了很多网页模板, 全部是压缩包, 里面的文个结构也不一致,  没办法方便的浏览到从网上下载的模板

要实现的功能:

从电脑中直接打开文件夹可以看到缩略图, 这样大概知道模板是怎么样的, 新的目录跟下载的压缩包名一致, 目录里同只存放PSD文件 

实现方法,  下载ACDSeePro 5 绿色版的, 可以直接看PSD缩略图, 全中所有压缩包, 单击右键--》解压每个压缩文件到单独的文件夹

接来复制文件由PHP来操作

主要使用函数

iconv — 函数库能够完成各种字符集间的转换
opendir — 打开目录句柄
readdir — 从目录句柄中读取条目
closedir — 关闭目录句柄
mkdir — 新建目录
is_dir — 判断给定文件名是否是一个目录
copy — 拷贝文件
end — 将数组的内部指针指向最后一个单元

index.php

<?php

header('Content-Type:text/html; charset=gb2312');

$oldPath = 'http://www.cnblogs.com/../software/网站模板/电子产品';
$newPath = 'http://www.cnblogs.com/../software/网站模板/view/电子产品';

//解决中文目录问题
$oldPath = iconv("utf-8", "gb2312", $oldPath);
$newPath = iconv("utf-8", "gb2312", $newPath);

move_file($oldPath, $newPath, 1);

/**  根据指定文件夹的第一级目录名, 在新的目录建立相应的目录名 
 *  @param string $oldPath (指定文件目录的路径)
 *  @param string $newPath (在新的目录建立相应的目录名)
 *  @return void
 */
function create_floder($oldPath, $newPath) {
    if (!is_dir($oldPath)) {
        return;
    }
    $handle = opendir($oldPath);
    while (false !== ($file = readdir($handle))) {
        if ($file != '.' && $file != '..') {
            $path2 = $oldPath . '/' . $file;
            if (is_dir($path2)) {
                echo $file . "<br>";
                mkdir($newPath . '/' . $file);
            }
        }
    }
    closedir($handle);
}

/**  把指定文件夹的第一级文件夹的PSD文件当独获取到新的日录, 过滤其他文件格式及多级文件夹
 *  @param string $oldPath (指定文件目录的路径)
 *  @param string $newPath (新的目录路径, 把指定文件目录内容复制到这里来)
 *  @param boolean $changeNewPath (是否为第一级目录, 多级子目录将被过滤)
 *  @return void
 */
function move_file($oldPath, $newPath = '', $changeNewPath = true) {
    if (!is_dir($oldPath)) {
        return;
    }
    $handle = opendir($oldPath);
    while (false !== ($file = readdir($handle))) {
        if ($file != '.' && $file != '..') {
            $path2 = $oldPath . '/' . $file;
            if (is_dir($path2)) {
                if ($changeNewPath) {       //文件夹下第一级的目录
                    mkdir($newPath . '/' . $file);      //在新的路径建立这些文件夹
                    move_file($path2, $newPath . '/' . $file);
                } else {
                    move_file($path2, $newPath);
                }
            } else {
                if (get_ext($file) == 'psd') {              //将PSD文件复制到相应目录
                    copy($path2, $newPath . '/' . $file);
                }
            }
        }
    }
    closedir($handle);
}

//获取文件扩展名
function get_ext($file_name) {
    return end(explode('.', $file_name));
}

?>
前望
原文地址:https://www.cnblogs.com/ybbqg/p/2496770.html