php fread函數介紹
string fread ( int handle, int length )
fread() 從文件指針 handle 讀取最多 length 個字節。該函數在讀取完最多 length 個字節數,或到達 EOF 的時候,或(對於網絡流)當一個包可用時,或(在打開用戶空間流之後)已讀取了 8192 個字節時就會停止讀取文件。
fread()實例:
<?php $file = "data.txt"; $fh = fopen($file, "rt"); $userdata = fread($fh, filesize($file)); fclose($fh); ?>
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讀取文件總是會多一個空字符
$fileSize = filesize($filePath); $handle = fopen($filePath, "rb"); while (!feof($handle)) { var_dump(fread($handle, $fileSize)); //會多輸出一次空字符 }
當我們使用上面代碼讀取文件,有時會多一個空字符。這是因為你是WINDOWS平台,文件是文本打開存儲的內容,末尾會有一個特殊字節標識文件結束,你用rb打開自然就可以讀到最後那個特殊字節了。用r打開,fgets讀吧。
通過此文希望能幫助到大家,謝謝大家對本站的支持!