php中移动复制文件我们使用copy,下面我们来看一个简单的实例,他实现了目录与目录文件移动,希望此文章对大家帮助。
方法一,copy+unlink方式
我的思路是:移动=新建+删除。在移动之前在目标的目录新建一个文件夹,然后在把文件和目录都复制过去,最后在执行删除.
<?php
/**
* @parammoveDir 剪切文件和目录
* @param string $to 目标文件路径
* @param string $from 源文件路径
*/
function moveDir($from, $to) {
if (!is_dir($from)) { //判断$from源文件目录是不是存在
return false;
}
$from = rtrim(str_replace('//', '/', $from) , '/'); //为了在linux上兼容,我们把/符号全部转换成/因为windows下面2个符号都可以的.
$files = scandir($from); //列出源文件目录的文件和文件夹,并且以数组的形式存入 $files。
/*
$files的输出结果:
Array ( [0] => . [1] => .. [2] => a [3] => b [4] => c [5] => dir [6] => dir.php [7] => dir2 [8] => dir2.php [9] => function_file.php [10] => homework.php )
可以看到scandir这个函数会输出2个多余的值: [0] => . [1] => ..在这对我们木有用.写一个if干掉他们。
*/
foreach ($files as $file) { //对 $files数组进行遍历,方便对数组里面的文件夹和文件进行复制和删除.
if (in_array($file, array(
'.',
'..'
))) { // array('.','..')新建了一个只有.和..的数组,并且查找$file里面知否有.和..这2个值
continue;
}
$subFrom = $from . '/' . $file; //把遍历后的文件夹或者文件名变成一个新的路径
$subTo = $to . '/' . $file;
if (is_dir($subFrom)) {
@mkdir($subTo); //判断$subFrom是不是一个目录,如果是目录就在目标的目录下面,新建一个目录
moveDir($subFrom, $subTo); //递归执行新建目录。
} else { //不是目录的话,就直接复制文件.复制完就删除文件.
copy($subFrom, $subTo);
unlink($subFrom); //删除所有文件
}
@rmdir($subFrom); //删除所有的目录
}
return true;
}
?>
moveDir('C:/Users/Administrator/Desktop/0704','e:');//在这传递你要移动的文件或者目录的地址方法二,rename
1.对于文件,rename可以在不同盘符之间移动.
立即学习“PHP免费学习笔记(深入)”;
2.对于空文件夹,rename也可以在不同盘符之间移动.但是目标文件夹的父目录必须存在.
3.对于非空文件夹,只能在同一盘符下移动.不过,1和3,应该差不多能够对付所有的应用情况了.
采用 php+mysql 数据库方式运行的强大网上商店系统,执行效率高速度快,支持多语言,模板和代码分离,轻松创建属于自己的个性化用户界面 v3.5更新: 1).进一步静态化了活动商品. 2).提供了一些重要UFT-8转换文件 3).修复了除了网银在线支付其它支付显示错误的问题. 4).修改了LOGO广告管理,增加LOGO链接后主页LOGO路径错误的问题 5).修改了公告无法发布的问题,可能是打压
0
<?php
rename("D:/testdir/test", "F:/totestdir/mydir");
?>对于一个40M的文件,copy+unlink方式需要7.6249899864197秒,而rename方式,只需要0.024738788604736,快300倍.
例
<?php
//定义一个变量,保存文件名
$file = "html/cache.txt";
$rename = "html/renameCache.txt";
//使用rename()函数重命名一个文件
if (rename($file, $rename) == TRUE) {
echo "重命名文件成功!";
} else {
echo "重命名文件失败!";
}
//使用rename()函数移动文件,并改名
rename("html/renameCache.txt", "html/a/2.txt");
//使用rename()函数重命名目录
rename("html", "cache");
//使用rename()函数移动目录到目标目录
rename("b", "cache/b");
?>文章链接:
随便收藏,请保留本文地址!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号