Php/docs/function.fwrite

提供:Dev Guides
< Php
移動先:案内検索

fwrite

(PHP 4, PHP 5, PHP 7)

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


説明

fwrite ( resource $handle , string $string [, int $length ] ) : int

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


パラメータ

handle

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

string

書き込む文字列。

length

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

length パラメータが指定されている場合、 magic_quotes_runtime 構成オプションは無視され、stringからの スラッシュ文字の取り除きは行われないことに注意してください。


返り値

fwrite() は、 書き込んだバイト数、またはエラー時に false を返します。


注意

注意:

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

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

注意:

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

<?php$fp = fopen('data.txt', 'w');fwrite($fp, '1');fwrite($fp, '23');fclose($fp);// 'data.txt' の中身は 123 となります。23 ではありません!?>

例1 簡単な fwrite() の例

<?php$filename = 'test.txt';$somecontent = "Add this to the file\n";// ファイルが存在しかつ書き込み可能かどうか確認しますif (is_writable($filename)) {    // この例では$filenameを追加モードでオープンします。    // ファイルポインタはファイルの終端になりますので    // そこがfwrite()で$somecontentが追加される位置になります。    if (!$handle = fopen($filename, 'a')) {         echo "Cannot open file ($filename)";         exit;    }    // オープンしたファイルに$somecontentを書き込みます    if (fwrite($handle, $somecontent) === FALSE) {        echo "Cannot write to file ($filename)";        exit;    }    echo "Success, wrote ($somecontent) to file ($filename)";    fclose($handle);} else {    echo "The file $filename is not writable";}?>

参考

  • fread() - バイナリセーフなファイルの読み込み
  • fopen() - ファイルまたは URL をオープンする
  • fsockopen() - インターネット接続もしくは Unix ドメインソケット接続をオープンする
  • popen() - プロセスへのファイルポインタをオープンする
  • file_get_contents() - ファイルの内容を全て文字列に読み込む
  • pack() - データをバイナリ文字列にパックする