首頁 >後端開發 >php教程 >php fread讀取文件注意事項

php fread讀取文件注意事項

高洛峰
高洛峰原創
2016-12-21 16:01:581375瀏覽

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讀取下大檔案出錯的解決方法中設定的最大記憶體使用值時會提示錯誤,以下的方法解決讀取大檔案的問題:

<?
  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(&#39;a.txt&#39;,&#39;rb&#39;)//二进制方式打开
$content=fread($handler,1024);
echo $content;
?>

   以字串形式傳回,那它是如何辨識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讀吧。

透過此文希望能幫助大家,謝謝大家對本站的支持!

更多php fread讀取文件注意事項相關文章請關注PHP中文網!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn