用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 "移动成功";
}
?>