此函数可以移动文件不知道是否具有覆盖功能如.将A文件夹下的1.jpg移动到B文件夹下并命名为2.jpg如果原来B文件夹下就有一个2.jpg的情况下.会不会覆盖成功

解决方案 »

  1.   

    具备覆盖功能,只有2.jpg有写权限,就会覆盖成功
      

  2.   

    谢谢1楼的答案再问一下如果我想直接移动并名命名覆盖原文件.不知道PHP里有没有什么好的办法办法一是先删除目标再用rename
    办法二是先copy覆盖再删除原文件除了这2个办法.有没有一步达成的办法
      

  3.   

    感谢2楼的答复看样子我还是需要自己做一下实验.就怕不同的平台会出现多种情况.因为PHP手册里没有查到rename是否有覆盖功能
      

  4.   

    看了2楼的,我查了下可能都对了一半rename() fails with PHP4 and PHP5 under Windows if the destination file exists, windows下,文件存在,会失败
      

  5.   

    刚试了一下WINDOWS下返回FALSE~~正准备去UNIX上试一下
      

  6.   

    我觉得如果目标文件名存在,先unlink接着rename,不去管平台
      

  7.   

    php 5.3.2 源码有一处是这么写的, (其余地方用到rename的地方也都这么写的)
    有MOVEFILE_REPLACE_EXISTING参数,可能可以避免rename失败.
    但是当目标是个目录时,即使加这个参数也没有用,一样会失败.
            /* rename on windows will fail if newname already exists.
               MoveFileEx has to be used */
    #ifdef TSRM_WIN32
            retval = (MoveFileEx(oldname, newname, MOVEFILE_REPLACE_EXISTING|MOVEFILE_COPY_ALLOWED) == 0) ? -1 : 0;
    #else
            retval = rename(oldname, newname);
    #endif
      

  8.   

    可是我的要求是只有在文件转移成功的时候才能对旧文件操作因为有可能发生我把旧文件删除的时候.新文件移动失败的情况最终还是用COPY处理了.先COPY过去覆盖.再删除原文件