php中移动复制文件我们使用copy,下面我们来看一个简单的实例,他实现了目录与目录文件移动,希望此文章对大家帮助。
方法一,copy+unlink方式
我的思路是:移动=新建+删除,在移动之前在目标的目录新建一个文件夹,然后在把文件和目录都复制过去,最后在执行删除,代码如下:
-
-
-
-
-
- function moveDir($from,$to){
- if(!is_dir($from)){
- return false;
- }
- $from = rtrim(str_replace(‘
- $files = scandir($from);
-
-
-
-
-
- foreach($files as $file){
- if(in_array($file, array(‘.’,’..’))){
- continue;
- }
- $subFrom = $from.’/’.$file;
- $subTo = $to.’/’.$file;
- if(is_dir($subFrom)){
- @mkdir($subTo);
- moveDir($subFrom, $subTo);
- }else{
- copy($subFrom, $subTo);
- unlink($subFrom);
- }
- @rmdir($subFrom);
- }
- return true;
- }
- moveDir(‘C:/Users/Administrator/Desktop/0704′,’e:’);
方法二,renam
1.对于文件,rename可以在不同盘符之间移动.
2.对于空文件夹,rename也可以在不同盘符之间移动.但是目标文件夹的父目录必须存在.
3.对于非空文件夹,只能在同一盘符下移动.不过,1和3,应该差不多能够对付所有的应用情况了.
代码如下:
- <?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";
-
- if(rename($file,$rename)==TRUE){
- echo "重命名文件成功!";
- }else{
- echo "重命名文件失败!";
- }
-
- rename("html/renameCache.txt","html/a/2.txt");
-
- rename("html","cache");
-
- rename("b","cache/b");
- ?>
(责任编辑:admin) |