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