php移动文件或者递归移动文件夹

用php移动文件或者移动文件夹,可以用php的自带函数:rename函数。

此处自己写了个函数实现rename函数的功能。


代码和注释:

<?php

header('Content-type:text/html;charset=UTF-8');

/**
 * 递归移动源目录(包括文件和子文件)到目的目录【或移动源文件到新文件】
 * @param [string] $source 源目录或源文件
 * @param [string] $target 目的目录或目的文件
 * @return boolean true
 */

function moveFolder($source, $target){

    if(!file_exists($source))return false; //如果源目录/文件不存在返回false

    //如果要移动文件
    if(filetype($source) == 'file'){
        $basedir = dirname($target);
        if(!is_dir($basedir))mkdir($basedir); //目标目录不存在时给它创建目录
        copy($source, $target);
        unlink($source);

    }else{ //如果要移动目录

        if(!file_exists($target))mkdir($target); //目标目录不存在时就创建

        $files = array(); //存放文件
        $dirs = array(); //存放目录
        $fh = opendir($source);

        if($fh != false){
            while($row = readdir($fh)){
                $src_file = $source . '/' . $row; //每个源文件
                if($row != '.' && $row != '..'){
                    if(!is_dir($src_file)){
                        $files[] = $row;
                    }else{
                        $dirs[] = $row;
                    }
                }
            }
            closedir($fh);
        }

        foreach($files as $v){
             copy($source . '/' . $v, $target . '/' . $v);
             unlink($source . '/' . $v);
        }

       if(count($dirs)){
            foreach($dirs as $v){
                moveFolder($source . '/' . $v, $target . '/' . $v);
            }
        }
    }
    return true;
}

// $basedir = dirname(__FILE__);
// $src = $basedir . '/ccc';
// $dst = $basedir . '/ddd';
$src = "./aaa.html";
$dst = "D:/abc/def/test.html";

if(moveFolder($src, $dst)){
    echo "移动成功";
}


?>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值