fread

(PHP 3, PHP 4 , PHP 5)

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

説明

string fread ( resource handle, int length)

fread()handleが指す ファイルポインタから最高lengthバイト 読み込みます。読み込みは、lengthバイト分 読み込まれたか、EOF(ファイルの終端)に達したか、あるいは (ネットワークストリームの場合)パケットが利用可能になったときの、 いずれか早い方の事象により中止されます。

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

警告

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

$filename = "c:\\files\\somepic.gif";
$fd = fopen ($filename, "rb");
$contents = fread ($fd, filesize ($filename));
fclose ($fd);

注意: ネットワークストリームやパイプから読み込んでいる場合、例えば remote filespopen()proc_open()が返すものを 読み込んでいる場合には、パケットが有効になった後に読み込みはストップ します。つまり以下の例のように分割されたデータを結合すべきである ということです。

<?php
$handle
= fopen ("http://www.php.net/", "rb");
$contents = "";
do {
    
$data = fread($handle, 8192);
    if (
strlen($data) == 0) {
        break;
    }
    
$contents .= $data;
} while(
true);
fclose ($handle);
?>

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

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

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