方法:1、用“file_put_contents(文件名,'數(shù)據(jù)',FILE_APPEND)”;2、用“fwrite(fopen(文件名,'a'),'數(shù)據(jù)')”,fopen()可以追加模式打開文件,fwrite()可在打開的文件中寫入數(shù)據(jù)。
本教程操作環(huán)境:windows7系統(tǒng)、PHP7.1版、DELL G3電腦
php怎么實現(xiàn)文件寫入不覆蓋
在php中,想要實現(xiàn)文件寫入不覆蓋,可以通過在文件末尾追加數(shù)據(jù)來實現(xiàn)。
PHP支持兩種在文件末尾追加數(shù)據(jù)的方法:
-
使用file_put_contents()函數(shù)
-
使用fopen()和fwrite()函數(shù)
有一個名為“test.txt”的文本文件,里面的內(nèi)容為:
來看看怎么向文件寫入數(shù)據(jù)(不覆蓋):
方法1:利用file_put_contents()函數(shù)追加數(shù)據(jù)
file_put_contents()函數(shù)可以將一個字符串寫入到文件中,語法格式如下:
file_put_contents(string $filename, mixed $data[, int $flags = 0[, resource $context]])
參數(shù)說明如下:
- $filename:要被寫入數(shù)據(jù)的文件名;
- $data:要寫入的數(shù)據(jù),可以是字符串、一維數(shù)組或者資源等類型;
- $flags:可選參數(shù),它的值可以是以下幾種(可以使用
|
運算符組合使用):- FILE_USE_INCLUDE_PATH:在 include 目錄里搜索 $filename。
- FILE_APPEND:如果文件 $filename 已經(jīng)存在,追加數(shù)據(jù)而不是覆蓋。
- LOCK_EX:在寫入時獲得一個獨占鎖。
- $context:可選參數(shù),一個 context 資源。
將file_put_contents()函數(shù)的第三個參數(shù)設置為“FILE_APPEND
”可追加數(shù)據(jù)而不是覆蓋。
示例:
<?php header("Content-Type: text/html;charset=utf-8"); //設置字符編碼 $file = "test.txt"; file_put_contents($file, '歡迎來到PHP中文網(wǎng)!33',FILE_APPEND); //寫入內(nèi)容 readfile($file); //讀取并輸出文件全部內(nèi)容 ?>
方法2:利用fopen()和fwrite()函數(shù)追加數(shù)據(jù)
<?php header("Content-Type: text/html;charset=utf-8"); //設置字符編碼 $file = "test.txt"; $handle = fopen($file, 'a'); //以追加寫入的模式打開文件 fwrite($handle, 'https://www.php.cn/'); //寫入內(nèi)容 fclose($handle);//關(guān)閉文件 readfile($file); //讀取并輸出文件全部內(nèi)容 ?>
關(guān)鍵代碼分析:
-
fopen($filename, $mode)
函數(shù)可以按照指定文件模式$mode
打開一個文件。當$mode
為a
或者a+
,設置在打開文件時,將文件指針指向文件末尾;這樣進行寫入操作時,數(shù)據(jù)會被追加到已有數(shù)據(jù)的后面。 -
fwrite()
函數(shù)可以將一個字符串寫入到打開的文件中,因此fwrite($handle, 'https://www.php.cn/')
語句的作用就是:將字符串“https://www.php.cn/”寫入到已經(jīng)打開的“test.txt”中。 -
寫入完成后,使用fclose()函數(shù)來關(guān)閉文件。如果想要獲取“test.txt”文件中的新內(nèi)容,就使用
readfile($file)
函數(shù)直接獲取。
推薦學習:《PHP視頻教程》