php移动文件夹和文件程序代码
发布:smiling 来源: PHP粉丝网 添加日期:2014-01-11 14:26:09 浏览: 评论:0
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");
- ?>
Tags: php移动 文件夹 文件
相关文章
- ·php unlink与rmdir实现文件与文件夹删除(2013-12-23)
- ·php如何获取文件夹大小程序代码(2014-01-05)
- ·php删除文件夹/目录下所文件(包含目录)(2014-06-19)
- ·php批量删除指定文件夹中指定后缀名文件(2014-06-19)
- ·php遍历读取文件夹/目录图片信息(2014-06-21)
- ·php遍历目录与文件夹的几种方法(2014-07-05)
- ·PHP删除指定文件夹根目录指定日期之前文件(2014-07-24)
- ·php 删除文件夹,可删除不是空的文件夹(2014-08-16)
- ·php递归删除目录,文件夹(2014-09-09)
- ·php在线文件与文件夹压缩实例代码(2014-09-09)
- ·php中删除文件夹以及文件夹中的文件程序代码(2015-04-11)
- ·PHP递归复制文件夹的类(2016-07-15)
- ·PHP如何实现批量清空删除指定文件夹所有内容(2018-09-28)
- ·PHP创建/删除/复制文件夹、文件(2019-08-12)
- ·php无限遍历文件夹示例分享(2020-10-15)
- ·php遍历文件夹下的所有文件和子文件夹示例(2020-11-01)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)