2013-07-16 160 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"); 
}