好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

php移动文件夹和文件程序代码 - php文件操作

php移动文件夹和文件程序代码

php中移动复制文件我们使用copy,下面我们来看一个简单的实例,他实现了目录与目录文件移动,希望此文章对大家帮助。

方法一,copy+unlink方式

我的思路是:移动=新建+删除,在移动之前在目标的目录新建一个文件夹,然后在把文件和目录都复制过去,最后在执行删除,代码如下:

/**    * @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:’); //在这传递你要移动的文件或者目录的地址  

方法二,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" ;  //使用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文件操作的详细内容...

  阅读:67次