php fread() 函數用於讀取檔案(可安全用於二進位檔案)。本文章向大家介紹fread讀取檔案的執行個體以及使用該函數讀取檔案需要注意的幾個地方,需要的朋友可以參考一下。
php fread函數介紹
文法
fread(file,length)
參數
file 必需。規定要讀取開啟檔案。
length 必需。規定要讀取的最大位元組數。
說明
fread() 從檔案指標 file 讀取最多 length 個位元組。該函數在讀取完最多 length 個位元組數,或到達 EOF 的時候,或(對於網路流)當一個包可用時,或(在開啟使用者空間流之後)已讀取了 8192 個位元組時就會停止讀取檔案,視乎先碰到哪種情況。
返回所讀取的字串,如果出錯返回 false。
fread()執行個體:
從檔案中讀取 10 個位元組:
<?php$file = fopen("test.txt","r");fread($file,"10");fclose($file);?>
php使用fread需要注意的幾點
1、fread讀取寫入大檔案出錯的解決辦法
使用fread讀取檔案時如果超過php.ini中設定的最大記憶體使用量值時 會提示錯誤,下面的方法解決讀取大檔案的問題:
<? set_time_limit(0);//設定指令碼執行時間無限長 $flie="flexbuilder_linux_install_a5_112409.bin";//大檔案超過php.ini中的記憶體配置 $fp=fopen($flie,"r"); $content=""; $filename="123.bin";//存為新檔案 $handle=fopen($filename,"a");//寫入方式開啟,將檔案指標指向檔案末尾。如果檔案不存在則嘗試建立之 while(!feof($fp)){//測試檔案指標是否到了檔案結束的位置 $content=fread($fp,1024); fwrite($handle,$content); } fclose($fp); fclose($handle); echo "資料成功寫入檔案"; ?>
2、php fread()是如何識別檔案編碼的
<?php$handler=fopen('a.txt','rb')//二進位方式開啟$content=fread($handler,1024);echo $content;?>
fread以字串形式返回,那它是如何識別a.txt使用的編碼方式的呢,才能保證不亂碼的呢?
PHP7.0以下的版本的檔案操作中沒有識別字元編碼。
只是按位元組資料輸出,如果和php源碼檔案和輸出的html的字元編碼一致就能正確顯示。
3、fread讀取檔案總是會多一個Null 字元
$fileSize = filesize($filePath);$handle = fopen($filePath, "rb"); while (!feof($handle)) { var_dump(fread($handle, $fileSize)); //會多輸出一次Null 字元}
當我們使用上面代碼讀取檔案,有時會多一個Null 字元。這是因為你是WINDOWS平台,檔案是文本開啟儲存的內容,末尾會有一個特殊位元組標識檔案結束,你用rb開啟自然就可以讀到最後那個特殊位元組了。用r開啟,fgets讀吧。