|
|
|
|
|
使用php有一段時(shí)間了,之前一直用fwrite寫入文件,不過當(dāng)我知道file_put_contents這個函數(shù)之后,fwrite就比較少用了,file_put_contents比fwrite代碼更簡潔。具體來說,fwrite至少要3行代碼完成一次寫入時(shí)間,而file_put_contents只需要一行代碼即可!
如下為file_put_contents的實(shí)例代碼:
<?php
$filename = 'file.txt';
$word = "你好!\r\nwebkaka"; //雙引號會換行 單引號不換行
file_put_contents($filename, $word);
?>
同樣的功能使用fwrite的實(shí)例代碼:
<?php
$filename = 'file.txt';
$word = "你好!\r\nwebkaka"; //雙引號會換行 單引號不換行
$fh = fopen($filename, "w"); //w從開頭寫入 a追加寫入
echo fwrite($fh, $word);
fclose($fh);
?>
從以上兩個例子看出,其實(shí)file_put_contents是fopen、fwrite、fclose三合一的簡化寫法,這對程序代碼的優(yōu)化是有好處的,一方面在代碼量上有所減少,另一方面不會出現(xiàn)fclose漏寫的不嚴(yán)密代碼,在調(diào)試、維護(hù)上方便很多。
上述例子里,file_put_contents是從頭寫入,如果要追加寫入,怎么辦呢?
在file_put_contents的語法里,有個參數(shù)FILE_APPEND,這是追加寫入的聲明。實(shí)例代碼如下:
<?php
echo file_put_contents('file.txt', "This is another something.", FILE_APPEND);
?>
FILE_APPEND就是追加寫入的聲明。在追加寫入時(shí),為了避免其他人同時(shí)操作,往往需要鎖定文件,這時(shí)需要加多一個LOCK_EX的聲明,寫法如下:
<?php
echo file_put_contents('file.txt', "This is another something.", FILE_APPEND|LOCK_EX);
?>
注意,以上代碼中echo輸出到顯示器里的是寫入文件字符串的長度。
常見問題:
Warning: fopen(file.txt) [function.fopen]: failed to open stream: Permission denied
當(dāng)寫入文件時(shí),有時(shí)會遇到上述問題,這是因?yàn)槲募]有寫權(quán)限的原因。為了避免這個錯誤的出現(xiàn),在寫入文件時(shí)需要判斷下文件是否可寫,這需要用到is_writable()這個函數(shù)。實(shí)例代碼如下:
<?php
$filename = 'file.txt';
if (is_writable($filename)) {
echo file_put_contents($filename, "This is another something.", FILE_APPEND);
} else {
echo "文件 $filename 不可寫";
}
?>
您可能對如下文章也感興趣