fwrite

バイナリセーフなファイル書き込み処理

説明

intfalse fwrite(resource $stream, string $data, intnull $length = null)

fwritedataの内容を streamが指しているファイル・ストリームに書き込みます。

パラメータ

stream

fopen を使用して作成したファイルシステムポインタリソース。

data

書き込む文字列。

length

lengthパラメータが数値の場合、 lengthバイト数分の書き込みが完了したか、 dataが終わりに達したかのいずれか早い方の 事象により書き込みは中止されます。

戻り値

fwrite は、 書き込んだバイト数を返します。 失敗した場合に false を返します

エラー / 例外

fwrite は、 失敗した場合に E_WARNING を発生させます。

変更履歴

バージョン 説明
8.0.0 length は、nullable になりました。

例1 簡単な fwrite の例

<?php
$filename = 'test.txt';
$somecontent = "Add this to the file\n";

// ファイルが存在しかつ書き込み可能かどうか確認します
if (is_writable($filename)) {

    // この例では$filenameを追加モードでオープンします。
    // ファイルポインタはファイルの終端になりますので
    // そこがfwrite()で$somecontentが追加される位置になります。
    if (!$fp = fopen($filename, 'a')) {
         echo "Cannot open file ($filename)";
         exit;
    }

    // オープンしたファイルに$somecontentを書き込みます
    if (fwrite($fp, $somecontent) === FALSE) {
        echo "Cannot write to file ($filename)";
        exit;
    }

    echo "Success, wrote ($somecontent) to file ($filename)";

    fclose($fp);

} else {
    echo "The file $filename is not writable";
}
?>

注意

注意:

ネットワークストリームへの書き込みは、 すべての文字列を書き込み終える前に終了する可能性があります。 fwrite の戻り値を確かめるようにしましょう。

<?php
function fwrite_stream($fp, $string) {
    for ($written = 0; $written < strlen($string); $written += $fwrite) {
        $fwrite = fwrite($fp, substr($string, $written));
        if ($fwrite === false) {
            return $written;
        }
    }
    return $written;
}
?>

注意:

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

注意:

fopen を使用して追記モードでオープンした stream の場合、 fwrite はアトミックになります (ただし、一部のプラットフォームにおいて data がファイルシステムのブロックサイズを超えない場合、 そしてローカルファイルシステム上のファイルである場合に限ります)。 アトミックであるとは、つまり fwrite をコールする前にリソースを flock する必要がないということです。データの書き込みが中断されることはありません。

注意:

同じファイルポインタに 2 回書き込みを行うと、 データはファイルの末尾に追記されます。

<?php
$fp = fopen('data.txt', 'w');
fwrite($fp, '1');
fwrite($fp, '23');
fclose($fp);

// 'data.txt' の中身は 123 となります。23 ではありません!
?>

参考

  • fread
  • fopen
  • fsockopen
  • popen
  • file_get_contents
  • pack