-1

我想用 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';
    }
?>

此代码不复制。有人可以更正代码吗?

4

3 回答 3

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';
}
?>
于 2013-07-16T20:25:21.007 回答
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";
}

希望这可以帮助!

于 2013-07-16T20:32:25.817 回答
0

正如史蒂文已经说过的那样,您需要将 更改<为 a>以便它检查文件是否更大而不是更小。

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

也许这就是你正在寻找的:

if(filemtime ($newfile) > filemtime($oldfile))
{
    copy($newfile,$oldfile);
    echo($newfile."copied");
}
else
{
    echo($newfile."not copied");
}
于 2013-07-16T20:36:20.203 回答