PHP副本文件A,如果大小大于文件B的大小

时间:2013-07-16 20:23:00

标签: php copy

我想用php检查根文件夹中文件的文件大小是否大于子文件夹“old”中同一文件的大小。如果大小较大,我想将文件复制到旧文件夹并覆盖现有文件。

<?php
$newfile = 'somefile.txt';
$oldfile = 'old/somefile.txt';

if (filesize($newfile) < filesize($oldfile)){
    copy($newfile,$oldfile);
    echo $newfile. 'is copied';
    }
    else {
    echo $newfile. 'is smaller';
    }
?>

此代码未制作副本。有人可以更正代码吗?

3 个答案:

答案 0 :(得分:5)

您需要使用>代替<

截至目前,您正在检查$ newFile是否更小,如果是,请将其复制到旧目录。

<?php
$newfile = 'somefile.txt';
$oldfile = 'old/somefile.txt';

if (filesize($newfile) > filesize($oldfile)){
    chmod($oldfile, 0777);
    if(!copy($newfile,$oldfile)) {
         echo $newfile. 'is copied and larger';
    } else {
        echo $newfile. 'is larger but could not be copied';
    }
} else {
    echo $newfile. 'is smaller';
}
?>

答案 1 :(得分:2)

您需要>检查newfile文件大小是否超过oldfile

我会使用file_exists()来确保两个文件都存在。

<强>代码:

<?php
$newfile = 'somefile.txt';
$oldfile = 'old/somefile.txt';

if(file_exists($oldfile) && file_exists($newfile)) {

if (filesize($newfile) > filesize($oldfile)){
    copy($newfile,$oldfile);
    echo $newfile. 'is copied';
    }
    else {
    echo $newfile. 'is smaller';
    }

}
else {
    echo "One of the file doesn't exist";
}

希望这有帮助!

答案 2 :(得分:0)

正如Steven已经说过你需要将<更改为>,以便检查文件是否更大而不是更小。

但是,在我看来,你确实在检查文件是否更新。文件大小不是检查文件是否更新的最可靠方法。如果某些内容被删除怎么办?

也许这就是你要找的东西:

if(filemtime ($newfile) > filemtime($oldfile))
{
    copy($newfile,$oldfile);
    echo($newfile."copied");
}
else
{
    echo($newfile."not copied");
}