2013-07-16 124 views
-1

如果根文件夹中文件的文件大小大于子文件夹“old”中相同文件的大小,我想检查php。如果尺寸较大,我想将文件复制到旧文件夹并覆盖现有文件。PHP复制文件如果文件大小大于文件B的大小

<?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

包括文件路径corrent?旧文件的目录是否可写? – Hast

+0

旧有chmod 0777 – VolkaRacho

回答

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'; 
} 
?> 
+2

为什么downvotes? – Steven10172

+0

这就是我想知道的。这是一个非常有效的答案。 – Dolchio

+2

为你+1,你的想法是正确的,但downvoter预计它为评论 – 2013-07-16 20:30:43

2

您需要>检查newfileoldfile更大的文件大小。

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

希望这有助于!

0

正如史蒂文已经表示,您需要将<更改为>,以便它检查文件是否更大,而不是更小。

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

也许这是你在找什么:

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