ホームページ > バックエンド開発 > PHPチュートリアル > php fread でファイルを読み取るときに注意すべき点は何ですか?

php fread でファイルを読み取るときに注意すべき点は何ですか?

怪我咯
リリース: 2023-03-13 21:22:01
オリジナル
2189 人が閲覧しました

php fread() 関数 は、 ファイルを読み取る (バイナリ ファイルに対して 安全 可能) に使用されます。 この記事では、freadファイルの読み込みの例と、この関数を使用してファイルを読み込むときに注意する必要があるいくつかの点を紹介します。必要な友達はそれを参照してください。

php fread関数の紹介

構文

fread(file,length)
ログイン後にコピー

パラメータ

ファイルは必須です。ファイルを読み取りのために開く必要があることを指定します。

長さは必須です。読み取る最大バイト数を指定します。

説明

fread() は、ファイル ポインター ファイルから最大 length バイトを読み取ります。この関数は、最大 length バイトを読み取ったとき、または EOF に達したとき、または (ネットワーク ストリームの場合) パケットが利用可能なとき、または (ユーザー空間ストリームを開いた後) 8192 バイトの読み取りが完了したときに呼び出されます。 、どの条件が最初に発生したかに応じて異なります。

読み取られたstringを返すか、エラーが発生した場合は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 "数据成功写入文件"; 
?>
ログイン後にコピー
fread は string

の形式で返されます。では、文字化けしていないことを確認するために、a.txt で使用されているエンコーディング方法をどのように識別するのでしょうか?

PHP 7.0未満のバージョンでは、ファイル操作で文字エンコーディングが認識されません。

バイトデータでのみ出力されますが、PHPソースコードファイルと出力HTMLの文字コードが一致していれば正しく表示できます。

3. fread がファイルを読み取るとき、常に余分な null 文字が存在します

<?php
$handler=fopen(&#39;a.txt&#39;,&#39;rb&#39;)//二进制方式打开
$content=fread($handler,1024);
echo $content;
?>
ログイン後にコピー
上記のコードを使用してファイルを読み取ると、余分な null 文字が存在することがあります。これは、ファイルがテキスト形式で保存されているテキスト ファイルであるため、ファイルの終わりを示す特別なバイトがあり、それを rb で開くと、自然に読み取ることができます。最後のスペシャルバイト。 r で開き、fgets で読み込みます。

以上がphp fread でファイルを読み取るときに注意すべき点は何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート