php rename()函数返回“没有这样的文件或目录”错误

时间:2013-08-09 19:30:24

标签: php function for-loop

我有一个包含多个图像的文件夹。

该文件夹为photos_1/130730782

图像是

.jpg
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg

我需要像这样重命名文件

.jpg  = 1.jpg
1.jpg = 2.jpg
2.jpg = 3.jpg
3.jpg = 4.jpg
4.jpg = 5.jpg
5.jpg = 6.jpg
6.jpg = 7.jpg

我正在使用此代码:

$sysid = '130730782';
    $dir = 'photos_1/'.$sysid;

    $myPhotoCount = iterator_count(new DirectoryIterator($dir)) - 1;

    for($i=0; $i<=count($myPhotoCount); $i++){
        $x = $i + 1;
        if($i == 0){
            rename("{$dir}/.jpg", "{$dir}/1.jpg");
        }else{
            rename("{$dir}/{$i}.jpg", "{$dir}/{$x}.jpg");
        }
    }

我收到此错误:

  

警告:重命名(photos_1 / 130730782 / .jpg,photos_1 / 130730782 / 1.jpg)   [function.rename]:没有这样的文件或目录   第18行/home/content/85/6608485/html/McCloskey/rename.php

     

警告:重命名(photos_1 / 130730782 / 1.jpg,photos_1 / 130730782 / 2.jpg)   [function.rename]:没有这样的文件或目录   第20行/home/content/85/6608485/html/McCloskey/rename.php

我知道文件存在,我在这里做错了什么?

3 个答案:

答案 0 :(得分:4)

您需要以相反的顺序重命名这些文件。

如果您将.jpg重命名为1.jpg,那么原始1.jpg可能会丢失/覆盖。

从最高编号开始,然后向后退。

答案 1 :(得分:1)

如下所示:

.jpg --> 1.jpeg

1.jpg --> 2.jpeg

依旧......

它不会对您的文件进行任何更改,因为 JPG和JPEG相同并且不会丢失/覆盖。

答案 2 :(得分:0)

我最终使用copy()将文件复制到另一个目录并在此过程中重命名。