php fread讀取文件注意事項
php fread函數(shù)介紹
string fread ( int handle, int length )
fread() 從文件指針 handle 讀取最多 length 個字節(jié)。該函數(shù)在讀取完最多 length 個字節(jié)數(shù),或到達 EOF 的時候,或(對于網(wǎng)絡流)當一個包可用時,或(在打開用戶空間流之后)已讀取了 8192 個字節(jié)時就會停止讀取文件。
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);//設置腳本執(zhí)行時間無限長
$flie="flexbuilder_linux_install_a5_112409.bin";//大文件超過php.ini中的內存配置
$fp=fopen($flie,"r");
$content="";
$filename="123.bin";//存為新文件
$handle=fopen($filename,"a");//寫入方式打開,將文件指針指向文件末尾。如果文件不存在則嘗試創(chuàng)建之
while(!feof($fp)){//測試文件指針是否到了文件結束的位置
$content=fread($fp,1024);
fwrite($handle,$content);
}
fclose($fp);
fclose($handle);
echo "數(shù)據(jù)成功寫入文件";
?>
2、php fread()是如何識別文件編碼的
<?php
$handler=fopen('a.txt','rb')//二進制方式打開
$content=fread($handler,1024);
echo $content;
?>
fread以字符串形式返回,那它是如何識別a.txt使用的編碼方式的呢,才能保證不亂碼的呢?
PHP7.0以下的版本的文件操作中沒有識別字符編碼。
只是按字節(jié)數(shù)據(jù)輸出,如果和php源碼文件和輸出的html的字符編碼一致就能正確顯示。
3、fread讀取文件總是會多一個空字符
$fileSize = filesize($filePath);
$handle = fopen($filePath, "rb");
while (!feof($handle)) {
var_dump(fread($handle, $fileSize));
//會多輸出一次空字符
}
當我們使用上面代碼讀取文件,有時會多一個空字符。這是因為你是WINDOWS平臺,文件是文本打開存儲的內容,末尾會有一個特殊字節(jié)標識文件結束,你用rb打開自然就可以讀到最后那個特殊字節(jié)了。用r打開,fgets讀吧。
通過此文希望能幫助到大家,謝謝大家對本站的支持!
相關文章
php實現(xiàn)的click captcha點擊驗證碼類實例
這篇文章主要介紹了php實現(xiàn)的click captcha點擊驗證碼類實例,不同于以往傳統(tǒng)的驗證碼,該驗證碼類可實現(xiàn)手機用戶點擊某一位置確認驗證碼,非常實用,需要的朋友可以參考下2014-09-09
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的區(qū)別
一直以來,有很多初學者搞不懂這些Mysql中從查詢結果集中取得數(shù)據(jù)的函數(shù)之間有什么區(qū)別,今天我就來秀一把,在秀之前先給大家一段PHP實例2009-04-04
無法載入 mcrypt 擴展,請檢查 PHP 配置終極解決方案
今天運行phpmyadmin的時候,提示無法載入 mcrypt 擴展,經(jīng)排查原來是php配置問題。2011-07-07

