PHP マニュアル
前のページ |  | 次のページ

# fread

(PHP 3, PHP 4, PHP 5)

fread -- バイナリ・モードでファイルを読み込む

## 説明

string fread ( resource handle, int length )

fread()は`handle`が指す ファイルポインタから最高`length`バイト 読み込みます。読み込みは、最高 `length` バイト分 読み込まれたか、EOF（ファイルの終端）に達した場合、 パケットが利用可能になった場合（ネットワークストリームの場合）、 あるいは（ユーザ定義ストリームをオープンした後で） 8192 バイトが読み込まれた場合のうち、最初に発生した事象により中止されます。

読み込んだ文字列、またはエラー時には `FALSE` を返します。

`<?php // ファイルの中身を読んで文字列に格納する $filename = "/usr/local/something.txt"; $handle = fopen($filename, "r"); $contents = fread($handle, filesize($filename)); fclose($handle); ?>`

警告
バイナリとテキストファイルの形式が異なるシステム(すなわち Windows)では、fopen()の mode パラメータに 'b' を指定してファイルをオープンする必要があります。

`<?php $filename = "c:\\files\\somepic.gif"; $handle = fopen($filename, "rb"); $contents = fread($handle, filesize($filename)); fclose($handle); ?>`

警告
通常のローカルファイル以外のもの、例えば リモートファイル や popen()、fsockopen() が返す ストリームを読み込んでいる場合には、 パケットが有効になった後に読み込みはストップします。 つまり以下の例のように分割されたデータを結合すべきであるということです。

`<?php // PHP 5 以降での例 $handle = fopen("http://www.example.com/", "rb"); $contents = stream_get_contents($handle); fclose($handle); ?>`

`<?php $handle = fopen("http://www.example.com/", "rb"); $contents = ''; while (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle); ?>`

> 注意: 上の例では繰り返し毎に関数をコールしないのでオーバーヘッドが抑制できるため、 伝統的な while(!feof()) を使うアプローチよりも パフォーマンス的にベターです。

> 注意: 文字列にファイルを読み込みたいだけならば、file_get_contents() を使うほうが上記の例よりも効率的です。

fwrite()、fopen()、 fsockopen()、popen()、 fgets()、fgetss()、 fscanf()、file()、 fpassthru() も参照してください。

前のページ | ホーム | 次のページ
fputs | 上に戻る | fscanf