程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php fread讀取文件注意事項,

php fread讀取文件注意事項,

編輯:關於PHP編程

php fread讀取文件注意事項,


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讀吧。

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved