在先前的文章《php檔案操作之逐行讀取檔案》中,我們介紹了逐行讀取檔案的方法,然後利用循環我們可以取得檔案的全部資料。那如果不使用循環,如何取得文件的全部資料?本篇文章就跟大家介紹一下不借助循環,一次取得文件全部資料的方法。
PHP中一次讀取檔案全部資料有多種方法,今天主要來了解兩個函數fread()和readfile()。
我們有一個名為「test.txt」的文字文件,裡面的內容是:
首先我們來了解fread()函數,看看下面的範例:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = "test.txt"; $handle = fopen($file, 'r'); //打开文件 $contents = fread($handle, filesize($file)); //读取文件内容 echo $contents; fclose($handle);//关闭文件 ?>
輸出結果:
#可以看出,「test.txt」檔案的內容全部輸出了。
其實,fread($handle,$length)
函數的作用是讀取開啟檔案$handle
中,指定$length
字符長度的字元。但當$length參數的值被指定為 “filesize($file)
”,那麼就可以讀取整個檔案的全部資料了。 filesize()函數的作用是取得檔案大小,在 fread()函數中的作用就是要讀取整個檔案。
使用fread()讀取整個文件,還要先打開文件,計算整個文件的大小,讀取完還要關閉文件,有復雜,有沒有更簡便的?答案是有,可以使用readfile()函數。
我們看看下面的範例:
<?php header("Content-Type: text/html;charset=utf-8"); //设置字符编码 $file = "test.txt"; readfile($file); //读取文件内容 ?>
輸出結果:
#是不是很簡單,直接使用一行程式碼「readfile($file);
」就可以一次取得文件的全部資料了;不需要開啟或關閉文件,也不需要使用echo
等輸出語句就可輸出檔案內容。
下面我們來了解一下readfile()函數。
readfile($filename,$include_path,$context)
函數會讀取一個檔案並將其寫入輸出緩衝,同時傳回從檔案讀入的位元組數。
此函數接受1個必要參數$filename
(指定要讀取的檔案名稱或檔案路徑),2個可省略的參數$include_path
和$context
。
$include_path
參數:設定是否想要在include_path (在php.ini 中)中搜尋該文件,預設為FALSE;如果您想,則設定參數值為'1'。
$context
參數:設定檔案句柄的環境
如果讀取失敗,readfile()函數會傳回FALSE並附帶錯誤訊息;我們可以透過在函數名稱前面加上一個'@
' 來隱藏錯誤輸出。
@
是一個錯誤控制運算符,將其放置在一個 PHP 表達式之前,該表達式可能產生的任何錯誤訊息都會被忽略。
好了就說到這裡了,有其他想知道的,可以點選這個喔。 → →PHP檔案基礎操作
#推薦:《PHP面試題大匯總(收藏)》《php影片教學》
以上是php檔案操作之如何一次獲得文件的全部數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!