我想用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';
}
?>
此代码未制作副本。有人可以更正代码吗?
答案 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");
}