- file_get_contents 讀取整個文件內容
- fopen 創建和打開文件
- fclose 關閉文件
- fgets 讀取文件一行內容
- file_exists 檢查文件或目錄是否存在
- file_put_contents 寫入文件
- fwrite 寫入文件
用 PHP 內置函數file_get_contents 讀取整個文件內容
用 PHP 內置函數 file_get_contents 可以讀取整個文件內容。
file_get_contents 函數讀取整個文件,返回一個字符串。file_get_contents 最簡單的寫法如下:
file_get_contents(filepath)
舉個例子,你有一個 .txt 文件,文件的路徑爲:
C:\blabla\php\hello.txt
下面的 php 代碼用 file_get_contents 函數讀取該文件,並輸出該文件內容:
<html>
<body>
<?php
$f = file_get_contents("C:\\blabla\\php\\hello.txt");
echo $f;
?>
</body>
</html>
注意:由於文件路徑含有反斜槓,而在 PHP 字符串裏,反斜槓需要轉義,要用兩個反斜槓表示。(如果你忘記了 PHP某些特殊字符的轉義,請翻閱前面所講的 PHP字符串。)
file_get_contents 函數的返回值是所讀取的文件內容字符串,如果出錯,返回FALSE用 PHP 內置函數 fopen 創建文件和打開文件
使用 PHP 內置函數 fopen
,可以打開一個文件。
打開文件
fopen
最簡單語法如下:
fopen(filepath,mode)
下面是打開一個文件的 PHP 代碼示例:
<?php $f = fopen("c:\\data\\info.txt", "r"); ?>
其中,c:\\data\\info.txt
是文件路徑,r
表示打開文件的模式(mode)
爲只讀 (read only) 模式。
fopen
函數打開文件的模式有以下幾種:
模式 (mode) | 說明 |
r | 只讀,文件指針在文件開始處。 |
r+ | 讀和寫,文件指針在文件開始處。 |
w |
只寫,文件指針在文件開始處,將文件長度截成0。 如果文件不存在,創建文件。 |
w+ |
讀和寫,文件指針在文件開始處,將文件長度截成0。 如果文件不存在,創建文件。 |
a |
只寫,文件指針在文件末尾處。 如果文件不存在,創建文件。 |
a+ |
讀和寫,文件指針在文件末尾處。 如果文件不存在,創建文件。 |
x |
只寫,文件指針在文件開始處。 如果文件已經存在,fopen () 函數返回 FALSE 併產生一個E_WARNING 級別的錯誤。 如果文件不存在,創建文件。 |
x+ |
讀和寫,文件指針在文件開始處。 如果文件已經存在,fopen () 函數返回 FALSE 併產生一個E_WARNING 級別的錯誤。 如果文件不存在,創建文件。 |
如果成功打開文件,fopen
函數的返回值是一個文件指針資源 (a file pointer resource),如果出錯,返回 FALSE。
創建文件
選擇 fopen
函數參數 mode 的適當的值 ,你可以用 fopen
創建一個文件,比如:
<?php $f = fopen("c:\\data\\101.txt", "w"); $f = fopen("c:\\data\\102.txt", "w+"); $f = fopen("c:\\data\\103.txt", "a"); $f = fopen("c:\\data\\104.txt", "a+"); $f = fopen("c:\\data\\105.txt", "x"); $f = fopen("c:\\data\\106.txt", "x+"); ?>
用 PHP 內置函數 fclose 關閉一個文件
上一節我們講了如何用 fopen 函數打開一個文件,這一節我們講述使用 PHP 內置函數 fclose
關閉一個文件。
fclose
函數語法如下:
fclose(filepointer)
如果成功,fclose
函數返回 TRUE,如果失敗,fclose
函數返回
FALSE。
下面是一個 fclose
函數的 PHP 代碼示例:
<?php $f = fopen("c:\\data\\info.txt", "r"); fclose($f); ?>
用 PHP 內置函數 fgets 讀取文件一行內容
用 PHP 內置函數 fgets
可以讀取文件的一行內容。
fgets
讀取文件一行內容的語法是:
fgets(filepointer)
下面我們舉個例子講述如何一行行讀取一個文件。
假設我們有一個 sites.txt 文件,該文件有三行,內容如下:
woyouxian.com blabla.cn google.com
sites.txt 的文件路徑是:
C:\blabla\php\sites.txt
我們用 PHP 一行行讀取文件內容,PHP代碼如下:
<html> <body> <?php $f= fopen("C:\\blabla\\php\\sites.txt","r"); while (!feof($f)) { $line = fgets($f); echo "site: ",$line,"<br />"; } fclose($f); ?> </body> </html>
執行該 PHP 文件,返回的顯示結果是:
site: woyouxian.com site: blabla.cn site: google.com
該 PHP 代碼的第一行是打開文件,最後一行是關閉一個文件。當中的 while 循環語句表示,當文件沒有結束,就讀取一行,循環執行,直到文件指針到文章末尾爲止。
feof
函數是PHP 的一個內置函數,用來測試文件指針是否已經到了文件末尾。如果是返回 TRUE,如果不是,返回 FALSE。eof 的英文意思就是 end of file,很容易記。
正常情況下,fgets
函數的返回值是一個字符串,如果出錯,返回 FALSE。
用 PHP 內置函數 file_exists 檢查文件或目錄是否存在
用 PHP 內置函數 file_exists
可以檢查某個文件或目錄是否存在。如果文件或目錄存在,file_exists
函數返回
TRUE,如果不存在,則返回 FALSE。
下面是一個簡單的檢查文件是否存在的實例代碼:
<html> <body> <?php $filename = "C:\\blabla\\php\\hello.txt"; if (file_exists($filename)) {echo "The file $filename exists.";} else {echo "The file $filename does not exist.";} ?> </body> </html>
如果文件存在,執行該 PHP 文件的顯示結果是:
The file C:\blabla\php\hello.txt exists.
如果文件不存在,執行該 PHP 文件的顯示結果是:
The file C:\blabla\php\hello.txt does not exist.
你也可以用file_exists 函數測試某個目錄是否存在,示例代碼如下:
if (file_exists("C:\\blabla\\php")) {echo "yes";} else {echo "no";}
用 PHP 內置函數 file_put_contents 寫入文件
PHP 內置函數 file_put_contents
用於寫入文件。
file_put_contents
函數最簡單的寫法,可以只用兩個參數,一個是文件路徑,一個是要寫入的內容,語法如下:
file_put_contents(filepath,data)
如果文件不存在,file_put_contents
函數會自動創建文件;如果文件已存在,原有文件被重寫。
你可以利用 file_put_contents
函數創建並寫入一個新文件,或者重寫一個原有文件。
下面是一個使用 file_put_contents
函數的 PHP 代碼示例:
<html> <body> <?php $path ="C:\\blabla\\filesys\\one.txt"; $content = "one for all"; file_put_contents($path,$content); if (file_exists($path)) {echo "ok";} else {echo "ng";} ?> </body> </html>
該 PHP 代碼示例會創建一個路徑爲 C:\blabla\filesys\one.txt
的文件,該文件的內容是 one
for all
。
如果你想在一個已有文件上追加內容,你也可以使用file_put_contents
函數,只需要加一個參數即可。
file_put_contents(filepath,data,flags)
當 flags 的值爲 FILE_APPEND
時,表示在已有文件上追加內容。
比如我們要在上面示例的C:\blabla\filesys\one.txt
文件上追加內容,我們可以這樣寫:
<html>
<body>
<?php
$path ="C:\\blabla\\filesys\\one.txt";
$content = " all for one";
file_put_contents($path,$content,FILE_APPEND);
if (file_exists($path))
{echo "ok";}
else
{echo "ng";}
?>
</body>
</html>
執行該 PHP 文件之後,我們再看 C:\blabla\filesys\one.txt
文件,發現文件內容增加了,變成了:
one for all all for one
file_put_contents
函數返回寫入文件的字節數 (number of bytes) ,如果出錯,返回 FALSE。
用 PHP 內置函數 fwrite 寫入文件
前面我們講過用 fopen 打開文件,用 fclose
關閉文件,這一章節我們講述如何用 fopen
, fwrite
, fclose
來實現打開文件、寫入文件和保存關閉文件的這一系列的操作。重點講述fwrite
函數。
PHP 內置函數 fwrite
用於寫入文件。
fwrite
函數的常用語法爲:
fwrite(handle,string)
其中,參數 handle 表示文件指針資源 (通常由 fopen
函數創建),string 表示要寫入的內容。
下面一個PHP 代碼示例演示如何創建一個新文件,並寫入內容,然後保存並關閉文件:
<html> <body> <?php $f= fopen("C:\\blabla\\php\\write.txt","w"); fwrite($f,"It is awesome."); fclose($f); echo "done"; ?> </body> </html>
執行該 PHP 文件後,會創建一個路徑爲 C:\blabla\php\write.txt
的文件,文件的內容是It
is awesome.
。
如果你想在現有文件上再追加內容,你只要修改 fopen
的 參數 mode 值即可,如下:
$f= fopen("C:\\blabla\\php\\write.txt","a");
有關 fopen
函數的參數 mode 值,詳見 fopen。
fwrite
函數返回寫入文件的字節數 (number of bytes) ,如果出錯,返回 FALSE。