在上一篇文章中我們介紹了一次性讀取文件全部數(shù)據(jù)的方法,感興趣的可以點(diǎn)擊鏈接查閱《php文件操作之如何一次性獲得文件的全部數(shù)據(jù)》。文件讀取操作了解了不少,下面我們來了解一下文件寫入操作。
正如標(biāo)題上說的,今天的主題是介紹一下覆蓋寫入(將文件原有內(nèi)容清空,然后重新添加數(shù)據(jù))。下面我們會通過代碼示例來給大家詳細(xì)介紹的。
還是之前的例子,有一個(gè)名為“test.txt”的文本文件,里面的內(nèi)容為:
想要將“test.txt”文件的內(nèi)容改為:
HELLO PHP!
我們來看看實(shí)現(xiàn)代碼:
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $file = "test.txt"; $handle = fopen($file, 'w'); //打開文件 fwrite($handle, 'HELLO PHP!'); //寫入內(nèi)容 fclose($handle);//關(guān)閉文件 ?>
寫入內(nèi)容后,我們讀取文件,看看是讓進(jìn)行覆蓋寫入
readfile($file); //讀取并輸出文件全部內(nèi)容
看看輸出結(jié)果為:
重新打開“test.txt”文件,看看內(nèi)容:
寫入成功!我們來看看關(guān)鍵語句:
fopen($file, 'w')
語句:fopen()函數(shù)可以按照指定文件模式$mode
打開一個(gè)文件;當(dāng)$mode
為w
或者w+
時(shí),會在打開文件的同時(shí),清空文件的內(nèi)容。
fwrite($handle, 'HELLO PHP!')
語句:將字符串“HELLO PHP!
”寫入到打開的文件中。
除了利用fopen和fwrite()函數(shù)來覆蓋寫入外,我們還可以直接使用file_put_contents()函數(shù)來將文件原有內(nèi)容清空重新添加數(shù)據(jù)。
看看下面的示例:
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $file = "test.txt"; file_put_contents($file, '歡迎來到PHP中文網(wǎng)!'); //寫入內(nèi)容 readfile($file); //讀取并輸出文件全部內(nèi)容 ?>
輸出結(jié)果為:
重新打開“test.txt”文件,看看內(nèi)容:
我們來了解一下file_put_contents()函數(shù):
file_put_contents($filename,$data,$mode,$context)
函數(shù)可以把一個(gè)字符串寫入文件中,接受兩個(gè)必需參數(shù)$filename
(要打開的文件)和$data
(要插入的內(nèi)容,可以是字符串、一維數(shù)組或者資源等類型),2個(gè)可省略的參數(shù)$mode
和$context
(文件句柄的環(huán)境)。
其中,$mode參數(shù)用于如何打開/寫入文件(即文件模式),有三個(gè)值:
-
FILE_USE_INCLUDE_PATH
:默認(rèn)值,用于覆蓋原有數(shù)據(jù)。 -
FILE_APPEND
:如果文件 $filename 已經(jīng)存在,追加數(shù)據(jù)而不是覆蓋。 -
LOCK_EX
:在寫入時(shí)獲得一個(gè)獨(dú)占鎖。
<?php header("Content-Type: text/html;charset=utf-8"); //設(shè)置字符編碼 $file = "test.txt"; file_put_contents($file, '歡迎來到PHP中文網(wǎng)!33',FILE_APPEND|LOCK_EX); //寫入內(nèi)容 readfile($file); //讀取并輸出文件全部內(nèi)容 ?>
重新打開“test.txt”文件,看看內(nèi)容:
可以看出,我們在文件的末尾添加了一段新數(shù)據(jù)!因此file_put_contents()函數(shù)不僅可以用來覆蓋寫入,還可以追加寫入。
好了就說到這里了,有其他想知道的,可以點(diǎn)擊這個(gè)哦。→ →PHP文件基礎(chǔ)操作
推薦:《PHP面試題大匯總(收藏)》《php視頻教程》