php专区

 首页 > php专区 > PHP高级 > 文件上传 > php移动文件夹和文件程序代码 - php文件操作

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

分享到:
【字体:
导读:
          php中移动复制文件我们使用copy,下面我们来看一个简单的实例,他实现了目录与目录文件移动,希望此文章对大家帮助。方法一,copy+unlink方式我...

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

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

方法一,copy+unlink方式

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

  1. /** 
  2.  * @parammoveDir  剪切文件和目录 
  3.  * @param string $to 目标文件路径 
  4.  * @param string $from 源文件路径 
  5.  */ 
  6. function moveDir($from,$to){ 
  7.  if(!is_dir($from)){//判断$from源文件目录是不是存在 
  8.   return false; 
  9.  } 
  10.  $from = rtrim(str_replace(‘//’,'/’,$from), ‘/’);//为了在linux上兼容,我们把/符号全部转换成/因为windows下面2个符号都可以的.  
  11.  $files = scandir($from);//列出源文件目录的文件和文件夹,并且以数组的形式存入 $files。 
  12. /* 
  13. $files的输出结果: 
  14. 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 ) 
  15. 可以看到scandir这个函数会输出2个多余的值: [0] => . [1] => ..在这对我们木有用.写一个if干掉他们。 
  16. */ 
  17.  foreach($files as $file){//对 $files数组进行遍历,方便对数组里面的文件夹和文件进行复制和删除. 
  18.   if(in_array($filearray(‘.’,’..’))){// array(‘.’,’..’)新建了一个只有.和..的数组,并且查找$file里面知否有.和..这2个值 
  19.    continue
  20.   } 
  21.   $subFrom = $from.’/’.$file;//把遍历后的文件夹或者文件名变成一个新的路径 
  22.      $subTo = $to.’/’.$file
  23.   if(is_dir($subFrom)){ 
  24.    @mkdir($subTo);//判断$subFrom是不是一个目录,如果是目录就在目标的目录下面,新建一个目录 
  25.    moveDir($subFrom$subTo);//递归执行新建目录。 
  26.   }else{//不是目录的话,就直接复制文件.复制完就删除文件. 
  27.    copy($subFrom$subTo); 
  28.    unlink($subFrom);//删除所有文件 
  29.   } 
  30.   @rmdir($subFrom);//删除所有的目录 
  31.  } 
  32.  return true; 
  33. moveDir(‘C:/Users/Administrator/Desktop/0704′,’e:’);//在这传递你要移动的文件或者目录的地址 

方法二,renam

1.对于文件,rename可以在不同盘符之间移动.

2.对于空文件夹,rename也可以在不同盘符之间移动.但是目标文件夹的父目录必须存在.

3.对于非空文件夹,只能在同一盘符下移动.不过,1和3,应该差不多能够对付所有的应用情况了.

代码如下:

  1.     rename("D:/testdir/test","F:/totestdir/mydir"); 
  2. ?> 
  3.  

对于一个40M的文件,copy+unlink方式需要7.6249899864197秒,而rename方式,只需要0.024738788604736,快300倍.

例代码如下:

  1. //定义一个变量,保存文件名 
  2. $file = "html/cache.txt"
  3. $rename = "html/renameCache.txt"
  4. //使用rename()函数重命名一个文件 
  5. if(rename($file,$rename)==TRUE){ 
  6. echo "重命名文件成功!"
  7. }else
  8. echo "重命名文件失败!"
  9. //使用rename()函数移动文件,并改名 
  10. rename("html/renameCache.txt","html/a/2.txt"); 
  11. //使用rename()函数重命名目录 
  12. rename("html","cache"); 
  13. //使用rename()函数移动目录到目标目录 
  14. rename("b","cache/b"); 
  15. ?> 
分享到:
php读取指定目录文件夹下所有文件名 - ph...
php读取指定目录文件夹下所有文件名 遍历目录下文件名并显示我们会用到几个函数一个是opendir目录读取函数,然后再利用readdir获取目录相在信息到数组然后通过while遍历出来。 显示目录下所有文件,代码如下:   删除指定目录下的所有文件,代码如下: /**    * 删除指定...
php中mkdir函数递归创建目录(文件夹) - p...
php中mkdir函数递归创建目录(文件夹) 在php中mkdir函数是创建目录它自身是不可以递归创建目录了,我们需要遍历进行目录然后调用mkdir即可,下面来看一下操作方法,实例代码如下:   实例2代码如下:   实例3代码如下: function mkdirs($dir)      {    ...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……