首頁 >後端開發 >php教程 >php fread讀取檔案有哪些需要注意的?

php fread讀取檔案有哪些需要注意的?

怪我咯
怪我咯原創
2017-07-14 09:49:042195瀏覽

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(&#39;a.txt&#39;,&#39;rb&#39;)//二进制方式打开
$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讀吧。

以上是php fread讀取檔案有哪些需要注意的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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